{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np \n",
    "from PIL import Image, ImageDraw, ImageFont \n",
    "from skimage import transform as tf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_captcha(text, shear=0, size=(100, 30), scale=1):\n",
    "    im = Image.new(\"L\", size, \"black\")\n",
    "    draw = ImageDraw.Draw(im)\n",
    "    font = ImageFont.truetype(r\"bretan/Coval-Black.otf\", 22) \n",
    "    draw.text((0, 0), text, fill=1, font=font)\n",
    "    image = np.array(im)\n",
    "    affine_tf = tf.AffineTransform(shear=shear)\n",
    "    image = tf.warp(image, affine_tf)\n",
    "    image = image / image.max()\n",
    "    shape = image.shape\n",
    "    # Apply scale\n",
    "    shapex, shapey = (shape[0] * scale, shape[1] * scale)\n",
    "    image = tf.resize(image, (shapex, shapey))\n",
    "    return image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x271a92356a0>"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "from matplotlib import pyplot as plt\n",
    "image = create_captcha(\"GENE\", shear=0.5, scale=0.6)\n",
    "plt.imshow(image, cmap='Greys')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAACnCAYAAADJ/o/1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAARp0lEQVR4nO3dfYwd1XnH8d8PYwL4RbxtCKwNy1vAKC84uaLUkMiUUiBFxJGIGhQQqVI5fxBBUCpC808pUaUor1SiInJimiiljlBCBCEoxHKxXIsKcZM4CY5rjMwar73gtRyKcRJcm6d/7E27M3fMvTt37pz13e9Hsu6ec2fmPHNm7j6eO2fPOCIEAADqdUzqAAAAmI1IwAAAJEACBgAgARIwAAAJkIABAEiABAwAQAI9JWDb19reavsF23dXFRQAAIPOZf8O2PYcSc9LulrSmKRnJd0UEb+pLjwAAAbTsT2se6mkFyJiuyTZ/p6kD0s6YgI+7bTTYmRkpIcmAQA4eoyOjmrv3r0ueq+XBDwsaeeU8pikP3mrFUZGRtRsNntoEgCAo0ej0Tjie73cAy7K6G3fZ9teabtpuzkxMdFDcwAADI5eEvCYpMVTyosk7c4vFBGrIqIREY2hoaEemgMAYHD0koCflXSB7XNsHyfpY5IeqyYsAAAGW+l7wBFxyPanJT0paY6kByNic2WRAQAwwHoZhKWIeELSExXFAgDArMFMWAAAJEACBgAgARIwAAAJkIABAEiABAwAQAIkYAAAEiABAwCQAAkYAIAESMAAACRAAgYAIAESMAAACZCAAQBIgAQMAEACJGAAABLo6XGEtkcl7Zd0WNKhiGhUERQAAIOupwTccmVE7K1gOwAAzBp8BQ0AQAK9JuCQ9FPbP7O9smgB2yttN203JyYmemwOAIDB0GsCvjwi3ifpOkm32f5gfoGIWBURjYhoDA0N9dgcAACDoacEHBG7W697JP1Q0qVVBAUAwKArPQjL9jxJx0TE/tbPfyHp3l4DevLJJzPlFStW9LrJSn3uc59rq7vnnnvqD2QaUvZpyv7K77dU3b7n96uqfSobc7/iAdA/vYyCPl3SD23/cTv/FhE/qSQqAAAGXOkEHBHbJb23wlgAAJg1+DMkAAASqGIijkrlR0r/4Q9/SBRJsS984QttdV/60pcy5ZtvvrltmVWrVvUtpqk2bdrUVnfDDTdkygcPHqwlFqm4v3bv3p0p96tvikbdV3U+jY6OVrKdvLIxVxFP0bmzbNmynrdbt/znr67PHjBdXAEDAJAACRgAgARIwAAAJEACBgAggRk/CKusD3zgA5nyunXrOq7z0ksvtdWdf/75mfKbb77Ztszvf//7THnbtm3dhFiJsbGxTLlo0Ew3g67q7K/Vq1dnyvlBWZL0+OOPd2y/k35Offrd7343U967t/2BYGX2oWzMO3bsKLXeVKeeempbXf7cPhrU+fkDesEVMAAACZCAAQBIgAQMAEACjojaGms0GtFsNt9ymddffz1TXrBgQcftDg8Pt9W9+OKLmfLcuXM7bqeoL377299mykX3yfJa82NnLFmyJFPevHlzx+3k5ftGkt7xjndkygcOHOi4ndncX92cT2UsXry4ra7oHnknZWPOt19n2ylVdS4D/dJoNNRsNtt/yYkrYAAAkiABAwCQQMcEbPtB23tsPzel7hTba21va72e3N8wAQAYLN1cAX9b0rW5urslrYuICySta5UBAECXuhqEZXtE0uMR8a5Weauk5RExbvsMSesj4sJO2+lmEFZB29Na/o/6NbjsjTfeaKs7/vjjp72dquIr0z9F+3DcccdVEU5XbR1t/VVWyphn2vlVp36dy0AZ/RiEdXpEjEtS6/XtZYMDAGA26vsgLNsrbTdtNycmJvrdHAAAR4WyCfiV1lfPar3uOdKCEbEqIhoR0ejn3LwAABxNyj6M4TFJt0r6Yuv10coiyima4GDnzp0d18tPKjB//vxK4mk0Gm11+ftk3dx/K5r0oFOM7373uytpu+jhDP26b/a2t72trS5/TLs5ngsXLsyUx8fH25aZN29ex+2UabvoQQvvec97MuWiB0qkjLmq879M20XnV1WfP2CQdPNnSGsk/aekC22P2f6kJhPv1ba3Sbq6VQYAAF3qeAUcETcd4a2rKo4FAIBZg5mwAABIgAQMAEACZQdh1eacc85pq+tmIEj+qTxlB4GsWLEiU96yZUvbMt0MfHr++ecz5RNPPHHasZxyyiml2s7L941U7yCZ/DHt5nju378/U963b1/bMt0MaCrT9u9+97u2uvPPPz9TLhqElTLmqs7/KtrupX1gkHEFDABAAiRgAAASIAEDAJDAjL8HPDIy0la3YcOGjutdfPHFmXLZiSZee+21TPnw4cMd19m4cWNb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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 4))\n",
    "image = create_captcha(\"BONE\", shear=0.1, scale=1.0)\n",
    "plt.imshow(image, cmap='Greys')\n",
    "plt.savefig(r\"B06162_08_12.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 4))\n",
    "image = create_captcha(\"BARK\", shear=0.8, scale=1.0)\n",
    "plt.imshow(image, cmap='Greys')\n",
    "plt.savefig(r\"B06162_08_13.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 4))\n",
    "image = create_captcha(\"WOOF\", shear=0.25, scale=1.5)\n",
    "plt.imshow(image, cmap='Greys')\n",
    "plt.savefig(r\"B06162_08_14.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [],
   "source": [
    "from skimage.measure import label, regionprops"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [],
   "source": [
    "from skimage.measure import label, regionprops\n",
    "from skimage.filters import threshold_otsu\n",
    "from skimage.morphology import closing, square"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [],
   "source": [
    "def segment_image(image):\n",
    "    # label will find subimages of connected non-black pixels\n",
    "    labeled_image = label(image>0.2, connectivity=1, background=0)\n",
    "    subimages = []\n",
    "    # regionprops splits up the subimages\n",
    "    for region in regionprops(labeled_image):\n",
    "        # Extract the subimage\n",
    "        start_x, start_y, end_x, end_y = region.bbox\n",
    "        subimages.append(image[start_x:end_x,start_y:end_y])\n",
    "    if len(subimages) == 0:\n",
    "        # No subimages found, so return the entire image\n",
    "        return [image,]\n",
    "    return subimages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [],
   "source": [
    "subimages = segment_image(image)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 161,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(subimages)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x216 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "f, axes = plt.subplots(1, len(subimages), figsize=(10, 3)) \n",
    "for i in range(len(subimages)): \n",
    "    axes[i].imshow(subimages[i], cmap=\"gray\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.subplots?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkoAAADCCAYAAAC2X+0FAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAmJElEQVR4nO3da6xV1dkv8P+zYXNRUC4bEblTtgheQEDEux6tyumJGFtP64fGkzQxTd4mbdIPJf3SnA8n8VNzPpymDUlJPenV5PU9kFalihdEAbHeAAH3LgJu3EC5Ciqy92acD6y13jGf8Yy51pp73ebe/19CmHPMudYac6251h5zzGc8Q5xzICIiIqJQW7MrQERERNSq2FAiIiIiimBDiYiIiCiCDSUiIiKiCDaUiIiIiCLYUCIiIiKKGNnsChAREQ0V7e3tbsyYMea2WDmli6Ux6u/vjz7m/PnzZvnXX3+d9lLHnXNTdCEbSkRERDUyZswYLFu2zNzW2dnZ4NoMDX19fWb5yZMno4/Zs2ePWd7d3Z32UgetQt56IyIiIopgjxIREdEgiMhTAJ4CgNGjRze5NlRr7FEiIiIaBOfcWufccufc8vb29mZXh2qMDSUiIiKiCN56IyIiqpHx48fj3nvvNbc99thjja3MEBEbwXbo0KHoY/74xz+a5WWCuU3sUSIiIiKKYEOJiIiIKIINJSIiIqIINpSIiIiIIthQIiIiIorgqDciIqIaERGMGDHC3MYpTLIZGBgwy+fNmxd9zPbt22v2+uxRIiIiIopgQ4mIiIgogg0lIiIiogg2lIiIiIgi2FAiIiIiimBDiYiIiCiC6QGIiIhqpL+/H6dOnTK3nTlzxizv6OiIPt/IkfwzHXPZZZdFt02bNs0sv/rqq6OPOXLkiFnOHiUiIiKiCDaUiIiIiCLYUCIiIiKK4M1Pyh0RcVkeN2bMmKBs3LhxqesAotMRNFJ/f39Qdu7cucT6F198Eexz/vz5utWp3pxzUq/nznoOtbWF15aVnENjx47N8nJ19+WXXybWrXNIn2cAcPHixbrVqZbqeQ7R8MGGEg0b8+fPD8ruuOOOxPrKlSuDfa644oq61alSVhDoG2+8kVi35jb66KOP6lan4chqBOlz6Pbbbw/2WbRoUd3qNBg7d+5MrL/11lvBPtu2bQvKPv/887rViajVsKFEuSAiTwF4qtn1oPziOUSN0N/fj+PHj5vbPvnkE7PcaoCX25bWq6d7CsuVA8DXX38d3ZZHztmdxmkjDGOj3thQolxwzq0FsBbIftuEhjeeQ0SUBYO5iYiIiCLYo0RDgk7KNmnSpGCfpUuXBmUPPvhgYn3x4sXBPmnd4o1iBdlOnTo1sW4lUrPeh/fffz+xbgXrEjB+/PigbN68eUHZfffdl1i/7bbbgn06OztrV7EamjFjRmL9mmuuCfaZPHlyULZjx47Eend3d20rVoFy3/mTJ082sjo0hLFHiYiIiCiCDSUiIiKiCDaUiIiIiCIYo0RDgk7oZ+WtufXWW4OyFStWJNZ13A8AtLe3B2V9fX1B2b/+9a/E+oULF4J9RMrnv5swYUJQNmXKlKBMxyRZdbcep5NQdnV1BfvEJu8cTqxJNW+55ZagTOdRss496zO1nD59OnU9Rp9X1jlrnQsTJ05MrM+cOTPYxzqvdPJWa9i5/j4A9vcmK50IVr/HzTqH+/v7zWMHgH/+859m+YIFC6p+nbSh/u+8845ZruMTfbG65VUsFUPa+xbDHiUiIiKiCDaUiIiIiCIG1VASkYdFZJ+IdIvImlpVioiIiKgVZG4oicgIAL8CsArAIgBPiEhrTmhERERElMFggrlXAOh2zu0HABH5M4DVAKKzcI4ZM8b5Sdz8RH7VzNCeNuO1Tp6XdZZrPUu4X1edgLCamcH9WeDTZn+v16zv/nGVm/U87bj8z8Cv91dffYULFy7UfcZuHbyqk8098sgjwWPuvPPOoEwHquokdoA9Z5A1J9Cvf/3rxPpnn30W7GMFc+uyRx99NNjHOh4dULtw4cJgHytZoE4y+Pvf/z7YZ8OGDUHZUKe/80uWLAn2eeyxx4IyHYhrJaq0WL9Nr776amJ9/fr1FT2Xrrv+jAHghz/8YVCmA9atebDuvvvuoEx/3+bOnRvs85vf/CYos74TWenA8MOHD6duJ8pqMA2l6QA+9dZ7AATDivyJKMeNG4dvf/vbpW3+TO3VzNCeNuO1nuk66yzXutHgj2zRs4NXMzO4PxIjbfb3es367h9XuVnP047L/wzS3n8iouEky6i3LBPSxiZ9LdbB8vHHH0cf88orr1Rdh1YWG92WpU0wmBglq9cg+OScc2udc8udc8v1FTARERFRKxtMj1IPAD/pxgwAqf2qfX19ia7XU6dOlZbnz5+f2DdtbqQrr7wyse7fpvrwww8T27L2KKXRuUZ0z0wa/zZV2lxdumu7EfNzVXNc/meQ9v4TERHl2WB6lHYA6BSRuSIyCsD3AAy/wAYiIiIasjL3KDnn+kXkRwA2AhgBYJ1zbnfNakYUMXr06KD366677kqsL126NHjc9OnTgzIrg7FmzYyu48uAZKwWAPT09AT7DAwMlH09a5+vvvoqKNNZonWmbsCeDV7Pbm89txXIr2eMB8Kg9ixZb4EwJjDr81Sqra0Nl112WaJMB29bParXXXddUKaDt62BKVYP8HvvvReUvf7664n1rVu3BvtYGd+1q666KijTxwuEAxyuv/76YB8rOF3vN2rUqGAf6zPcsmVLULZ7d/LPhnUXwPpO6GB4fR5nHchDpA1qChPn3PMAnq90/y+//DKRWt0f7TNnzpzEvtYIpSL9Q9Hb21tarlUclB4x4b+G/tJaKf5j/C+v/sPm/7jp24s6HXvWW2/+cfnHBFR3XP5n4D9PNSMAiYiIWh0zcxMRERFFcFJcIiKiGmlUeoC03IN6MFBRWn6+ffv2VV2H4YINJcqd0aNHY968eYkyHaNkJcCzYi10HIMVV2HFkrz44otBmf4RPHbsWLBPJfElVsyQvk1qPdeyZcuCfWbNmhWU6bilhx56KNjHuu1q/ZjrsqyxRZdffnlivV4JV4va2tqC19SxWzfddFPwOCsho05Sar1PVqLFv//970GZn0sNCJMoAvb5oc9j63w5ffp0UHb8+PHEupWb59prrw3KJk6cmFhfvHhxsM+ECROCMv2eW/WyPnvrmDXGJFG9NLSh1N/fn/hivvnmm6Vl/YcujQ5U9FMJ1CpGSf/Y+X8ErT+AlfIz6Oq6+oGi+odh3bp1mV/T5x9XJX/YY/zPwH//R48ePYjaERERtRbGKBERERFFsKFEREREFNHQW2/OucTwdD8zt76H7+dn0XEBOmeHP5ReT/LoP281Wbr1/W4/o7a+RZVWV2uS1SI9kaV//37KlCmJbToHkP+a1RyXn0tFxxXo986PgdH5hj799D+n+fvggw9Ky/XOf0NERNRIDOam3HHOBTmf9LoVq2Yll/QbwAASeb6KrKR/u3btCspOnjyZWM86e/mJEyeCsnfffTco03FsDzzwQLDPN7/5zaBMBylPnjw52GfBggVBmRUsri9wrODjSqRN8Fkv+jX1RKLWqCIraaO+4Dl48GCwj5Vo0UrgeejQocR6JYHbFmvQgFWvv/71r4l1K+j8kUceCcpWrFiRWLcGT8yePTsoswLk9QTgVh0qCeZuFX19fQ0Z9ZYWD/qNb3zDLNcX4FQZ3nojIiIiimBDiYiIiCiiqbfe/C5knc/Dn7JDzwOVtq7jbvw4qK6ursQ2vztXd2fr7nS/y13fUvG7WfXUI2kxSpo/pYueCkTnDfK70auJUfLjoHTeGN1V7nff6+PYv39/aXnbtm2lZX0ri4iIKM/Yo0REREQUwWBuyp329vYgu7SeYNgKdPR77IrKBfQCyV7JIitoWQdkZg1QtupgZVXWs65bWY+t7Mjz589PrOseWsAO8L799tuDsrNnzybWrbrv3bs3KNOfhf789PPWWnt7e/CaemSp7h0Gwp5mizXTvTUa1DqH9LmWNdu0de5ZAcP+6FXArrt1DumgYN3jDdjfQWuQgB6EYAVuW4MZdOA7Ub2wR4mIiIgoomV6lPRwSn8YpXUV4vOveL773e9Gt+m5lfz8Pzq2Rg8DXr58eWlZz33kX8mnTVRYDX01pod7+sPT/XihcvwrzXLDof33QF9J+/v6y1avDRHRcOGci85VqFOIFFkpEYp073mRNXdlkdVLDNgpPooef/xxszwtdUErz68X63H045+1WE82e5SIiIiIIlqmR4moUqNGjcKMGTMSZXPmzEmsVzo5r+5FmzRpUrCP1Ut25syZip6/VqzYER3PsmfPnmAfPYE0AKxevbrs61mJFZcuXVr2cRYrFkcfj455Sbvqq4WRI0cGr6ljt3SW/UpZsWJWvNO5c+eCskYnVtSxU1bPxvbt24OyW265JdPrzZw5Myi75557EuvW9816XxijRI3SMg0l/cP4yiuvlJZ1N6L+wfaDMPVtOv8Pmv7D0t3dXVrWt970l9UfHq+7PP3AV/2HV/8Y+nXo7e1NbPODSydOnJjYduuttybW/eBena7AD57VP4T+vj09PYlt+o9/WuCqf0vTf/+t7NdERER5xVtvRERERBFsKBERERFFsKFEREREFNEyMUo68dnmzZuj++rpPWbNmlVa1rE9CxcuLC0fO3YssW39+vXR19DBpv6wTp3MzQrULNLDRP24oJdffjmxzZ+RWydhqyaQ1g+e1TFK/lBPPZN1bMZrix8I66cuqDSIejDa2towZsyYRJkOxK20HuXSMAD5mXHb+vys2cormancSnNhDUeu5Lx87rnngjL9fdfxcVbwei0NDAwEr+n/jgDZP3frcdZ51YjvSrWsc8M6h6r5rfDp7y0QJvpctWpVsM/OnTuDso0bN2aqQyPEks3GgvUPHDgQfa65c+ea5WnpAWJpatKC8K3EokB68td6f08H44033jDL037/9u3bZ5azR4mIiIgogg0lIiIiooiWufWmb1H5t49eeOGFxLYbb7wxsf7QQw9Fnzd2iwhI7/rW3XN+93M13c66e9TvevZTIADJNAj6mPTzpN3y8G91HD16NLFtKNx6IyJqJSLyFICnml0Pqo+WaSgRERHlkXNuLYC1ACAi2WbDppbFhhLlzsDAQBBgqANz/SSgRX7S0CId9GjNkWQF506dOjUoO3HiRGJdz6VXb9b8UtbcUjr7sjWXlBUoagWI6oEM06ZNC/axsjHr3kudmLXec0hdvHgxeE0/iStgv5+VJFS1Apb1IBPAft/1Z5MWSFsPVnCulUFcf3665xqo/Duo3y/r+2a9V/o72OzvHw1dZRtKIrIOwH8DcMw5d0OhbBKAvwCYA+AAgP/unDsVew4iIqLhLjbiyhpZWHT99deb5XrapkroEYY+q2ELpF+0xEb3tYLYzBJpISaxUW+V9Cj9DsD/AfB/vbI1ADY5554WkTWF9Z9V8FxR+sPwr+b0gemrLv9qRn/Y/tWKvqrzr1L0c+orq87Ozujz+EM+9dXRkSNHEuu7du0qLR8/fjyxzT9OfYWmj8u/ktdX8f4VvH4e/7j8YwKqOy4/1YL/Ja9k6HkWfgxA2rBYohj/HLJ6NoiILGVHvTnnNgPQ/ferATxTWH4GwKO1rRZRknNurXNuuXNuuTVhK1E5/jnEhhIRVSrrr8VU51wvADjnekUknKK8gKMBqNb6+/uDXsaDBw8m1q1ep0r+OFpxOFbMxOzZs4MyHU/S6BgJqxvcSnCnk9tZCe0q7bXTk0dbjVjrFoGeBFvXsxExSvo1a/W+6PcEyP6+NDpGyWLFLZX7/gGN/w7q96re5xANH3W/rOJoACIiIsqrrA2loyIyrdCbNA3AsbKPGAR9RZN2NaOvYvwrOT2iyQ+S08+pR1EtW7astKxjgi5cuFBaHjVqVGLboUOHEuvvvfdeaVmPqjl16j/j4cv1kPjHpa9W/StVfYXqj2DRuZiyHpd/THrKFCIiojzLmpl7A4AnC8tPAohPmkZERESUU5WkB/gTgHsBdIhID4BfAHgawLMi8gMAhwA8Xs9KEhER5V2W9AB6MvfB0HcGfLGJdNPi5PwZNHx6tHczxOqWZSLfsg0l59wTkU33V/1qNaJPnO7u7tKynkXevy2lZ0d+5JFHSss6kZyerXrSpEml5SuuuCKxzb+lp082//YVAHzxxRelZX0C+jOq+8cEpB+XnjZk3rx5peXdu3cntvm3xsaOHZvYlvW4/GNqRABlX19f6jkAhO8XYAfUVuKqq8KxCtZs8LoOrXAbspLZ4K08LVlytAD2FDb++Vikz0t9i7oRwdxp0xQBrfG+pM0q30zlvn9A47+Dug71SlVCww8nxSUiIiKKYEOJiIiIKIINJSIiIqKIXKan1UPnt2zZUlrW97JvuOGG0nJHR0di24033lha9uNsgHDKDj+e6PPPP09siwXBAeGkof5EjnouGn8ov39MQPpx6fv+t9xyS2lZxxL4Cd90CoSsx+UfUyWThhIREeVFLhtKNLxZmbl1IG4tAzmtrMBWoOprr71Ws9eslUqCuWs5qsYKWrbeK/2ednV1JdbrPdmmc65sMHcrvC+tqtz3D2j8d1B//2KTojZT7D2xguGL9Jyg9aIHHhXpgRa+N9980yz/xz/+UZM6DYa+8C/S87pWovXOJCIiIqIWkcsepZ6ensS636q9/PLLE9v8W2hXX311Ypu/fvPNNye26Xm6/vKXv5SWq2nh6yshf0irvsr0j0u31NOOa+XKlYltS5YsKS3rIer+7bR9+/YltmU9rrRjIiIiyjP2KBERERFFsKFEREREFJHLW280vLVCMLeVmbsVbzta74MOHK1lsGjWoGVdz2YEc7fi+9KqWiGYW38H9XssIjV7fRrectlQOnfuXGLd/4E7ffp0YtvMmTNLy3feeWf0OfUXccaMGYl1P35I/0ikqSZGyT8u/aNdzXFNnjy5tHzXXXclto0fP760/NZbbyW2ZT0uxigREdFQlcuGEhERUd5kmRS3mgvYctLmUIwNp9+xY0f0MS+++KJZHksb0EixY42lQUjDGCUiIiKiCPYoUe4wRqlylSScrOUVq/UeWO9VuRiltCvfWrh48WLZhJOt8L60KsYo0XCSy4aS/hH1cwXprJtpsUUTJ04sLespS/xpOQBg+fLlpWU9nYgfW6SnE9GxRUeOHCkt6+k+/OlFdP6jrMc1adKkxDb/x2XFihWJbVmPyz+mvr4+EBERDRW89UZEREQUwYYSERERUUQub72l0VOP+LelDh48mNjmTwuiby35Q+wBYNWqVaVlfTvLvxc/duzYxLbe3t7E+t69e6N192/F6cj8ehyXf0xA9uPyj+n8+fMgIhqu2tragimnis6ePVtVORCPlUuLofPDL3z+FFZaLKZsz5490cfERuudOHEi+pg8GnINJRr6Ll68GDTIdAyXnkkcsOOn5s2bl1jXsWqxMt2oBMK5BK1ZqtN+EOthYGCgbB2sH1yrzPrx9ePqAPuH2M/dVaSDc/WFycmTJ4PH1NLIkSODz1APj965c2fwuNdffz0oW7hwYWJ9woQJwT6jRo0Kyip5X6wg5lOnTgVl+kKq3vT3z/q8/NjFomuuuSYos94HrZLvoP7+HT58uOzzElWCt96IiIiIIthQIiIiIooY8rfe/FsI+n6qP1Rex/KMGzcuse5PE9LWlmxf+vE7+tbDmTNnEuv+sH49l9RXX30VHkBELY5LT32S9bj8Y8qS9ZSIiKhVsUeJiIiIKGLI9yjR0KSTjureufXr11f0PHp0yvTp04N9rEBc3eMIANddd11i/ejRo8E+n3zySVCme+Gcc3ZlM7CyE+sAbD3JNGAH4lrHrJ/LqrsVaKyfSyc7jc07VSsjR44MXlMHub/33nvB45577rmg7Dvf+U5iXQd3A0BHR4dZB23atGlln2v37t1Bme65rndwd9roqSLr/Nf1BCoL5rYGJWg6SbBO6EuU1ZBvKH366ael5e3btye2zZo1q7S8YMGCxDY9ouKKK67I9Pr6D4L1g1lUzbQNtTiurMcEJI/LPybrx5+IaLgYMWJE9Lc1Nuo1rWEbSwOg08L4YukJdCiGL/b3R1+E+qyLrKGIt96IiIiIIso2lERkpoi8KiJ7RGS3iPy4UD5JRF4Ska7C/3aGKyIiIqKcquQ+ST+Anzrn3hWR8QD+ISIvAfgfADY5554WkTUA1gD4Wf2qShSnu4DffPPNYB8rFkInOrSSKloxSlbX+oMPPphYt7rTraSX/qhBoLazrluz1uskm1aCRKsOlcROWY/bv39/UKaTJuqEgnoEZq21tbUFr6njubq7u4PHWZ+pTgpp3fZIu+Xuu/766xPr3/rWt4J9rFsk+/btS6ynZW2uBX08s2fPruhxlcQaWazbPwcOHMj0XETVKttQcs71AugtLJ8VkT0ApgNYDeDewm7PAHgNLdhQ8v8Ibd26NbHN/4HTf1CszMtZ6B9Rf+i+9UesUq10XLU6JiIiolZT1WWbiMwBcDOA7QCmFhpRxcbUVSkPJSIiIsqdiocoicg4AP8O4CfOuc+tYceRxz0F4Kls1SMiIiJqnooaSiLSjkuNpD8454qJRI6KyDTnXK+ITANwzHqsc24tgLWF56ldghgiIqIWIyI1TZMSizfTMzL4/HAIX1p6gFjYROy5ADunF5CeuiCPyn6acqnr6LcA9jjnfult2gDgSQBPF/6vLMNfg/kJzvSH6p+AOtB36dKlNXn9esUotdJx+cdkzfLdCDrA1UpYuHfv3qDsrbfeSqxbCSd1LirATr5YyXtrBU7rGemt4GdrdnbNOp90UkUAWLx4cWJ90aJFwT56JnagsgR+VrCzlWRQJ7Ts7e1NrFtB77XU19dX9jWtOujHAMDbb7+dWLfeOyuY29rPz4EGAPfdd1+wj/Ud27x5c2J9x44dwT5WElGd7NQKoreC0/Ufz+XLlwf76EEDAHDllVcGZZWwpnfSAd56UASnU6JaqaTZeweA7wPYKSLvF8p+jksNpGdF5AcADgF4vC41JCIiImqSSka9bQEQC0i6v7bVISIiImodQ36+CT9vh861c/78+dKyPyUIEHbr+rdMqrn/rLuM/VtC+n6x36Xu181Si+PSt4GyHpd/TFnzpBAREbUiTmFCREREFDHke5SIinSwJ5CerLPIykh90003BWU6ENfK3q1nhwfCzN86MBeIjy7xWZnHrYDa22+/PbG+ZMmSYJ8ZM2aUfT2LlTX6yy+/DMqOHUsOkj18+HCm18uqr68v02taQcUffvhhYt1K6mp9NvpzAMLgex14b+0DhEHSVuC9HrgAhIMerF5lnb0eAG688cbE+m233Rbsc+211wZlWSfitjK+nz59OrGue8+bFcw9MDBgDmDIKjbqraurK/qYe+65p+rXyTLqzfq9HIrYo0REREQUMax6lHTPgD/8Vw/71UPJ/aujsWPHVvyahw4dSqz780fpobj+VWC5GCVf1uPSV3xZj8s/pmrqXQ0mLqXB4jlERFkMq4YS5RcTl9Jg8RwioizYUKJhw4ob2LVrV2LdSsr32WefBWVWMsJly5Yl1q3kejq2Awjjlqz4oJdeeiko03SsE2DP6n7//cmsHnPnzi373DE6JsmKCzl16lRQZsUt5UElSShfeOGFYB8ri/LZs2eDsrvvvjux3tnZGexjxbmtWrUqsW7FlVjn49GjRxPr1tRUVoLLO++8M7F+xx13BPtYSVkrYY2c/eKLL4IyHaNkJTslqgU2lAp0YNzLL7+cWD9x4kRpuZofgA8++CCx/sYbb5SW9W0568dgsNKOyz8mIPtx+cekUxUQERHlGYO5iYiIiCLYo0RERFQjAwMDwW3BwdCpNIqsOSGLrHQK5Vi37gGmBwDYo0REREQU1egepeMADgLoKCy3gg4Ax7dt25Yo1OsNVNP3pgbHVW19wujhFmEFieqYKiuh4KuvvhqUWWkQ9FWkFbg9ffr0oEwHb1szxluP06yZ360A3pkzZybWrWBdK2jZCnTX758ObAaALVu2BGWffPJJUJYHVvJRHcCupz8C7Pfz2WefDcp04Lt1LlhX+Ho6ohtuuCHY5/HHw3nL9ednBXNb59WCBQsS65UmkrQC+/X7ZX23duzYUbZMDxCwkp8SZdHQhpJzbgoAiMg7zrnljXztmFaqC8D6EBERtRLeeiMiIiKKYEOJiIiIKKJZo97WNul1La1UF4D1ISKigtikuFYS06Iso95iU1jNnz8/+hhrguahqCkNpcJUAi2hleoCsD7NZgV87969Oyizgpb1j5OVeXnlypVBmZ5t3srMbZVlpQOSrXpaZTp5KgAcPnw4sX7gwIFgn02bNgVlBw8eLFfN3LKCiK0gZivbun7frcEFDzzwQFA2a9asxLoVxL9ixYqwsjVinS8Wa0j7Rx99lFjXiXABe0DA22+/nVjXCXut7zJRFrz1RkRERBTR0IaSiDwsIvtEpFtE1jTytQuvv05EjonILq9skoi8JCJdhf8nNqguM0XkVRHZIyK7ReTHTa7PGBF5W0Q+KNTnfzazPkREeSEiT4nIOyLyTrPrQrXXsIaSiIwA8CsAqwAsAvCEiCxq1OsX/A7Aw6psDYBNzrlOAJsK643QD+CnzrmFAFYC+LfC+9Gs+nwN4L845xYDWALgYRFZ2cT6EBHlgnNurXNuOVOpDE2NjFFaAaDbObcfAETkzwBWA/go9VE15JzbLCJzVPFqAPcWlp8B8BqAnzWgLr0AegvLZ0VkD4DpTayPA1DMPtde+OeaVZ9Wd+bMmaDsb3/7W2LdmnrAiuG56aabEuuXX3754CpXA9bxvf7660HZu+++m1jv7u6u6LmyBJsOBzt37kysnzx5MtjHio9bunRpYn3evHm1rViNWHFuW7duTazr9wAAjh49GpTpZJn9/f2DrB2RrZG33qYD+NRb7ymUNdvUQqOl2HhpeBh/ofF2M4DtzayPiIwQkfcBHAPwknOuqfUhIiJqtkb2KIW58S/1WAxrIjIOwL8D+Ilz7nNrCoFGcc4NAFgiIhMA/IeIhPMgEBFRw1hTugB2b2ORNd0QAFxzzTXRx8R6stOmp4lNitvR0RF9TGzC4FbuEWxkj1IPAH+SqRkAPmvg68ccFZFpAFD4356quQ5EpB2XGkl/cM491+z6FDnnTuPSLbaHW6E+REREzdLIhtIOAJ0iMldERgH4HoANDXz9mA0AniwsPwlgfSNeVC51Hf0WwB7n3C9boD5TCj1JEJGxAB4AsLdZ9SEiImoFDbv15pzrF5EfAdgIYASAdc65MJNfHYnIn3ApMLlDRHoA/ALA0wCeFZEfADgEIJxiuz7uAPB9ADsLcUEA8PMm1mcagGcKoxPbADzrnPuriGxtUn3SHAdwEEBHYbnhrGR2uit848aNwT5eWdPqPkiNqvfsOj9/088hi06a+PHHHwf7eGUtVfcqNaLu9T6HaJhoaGZu59zzAJ5v5Guq138isun+hlYEgHNuC+y4LaA59fkQlwLKdfmJZtQnjXNuCgCIyDt5HY6b17rntd4az6HmynPdafhhZm4iIiKiiGZNiktERERlxOasS5tfr6uryyxPm8R2+vTqs/VcdtllZvnVV18dfYy+vVzEUW9E9ZHnCXvzWve81jsmz8fDuhM1ABtKlFvOudz+2Oa17nmtd0yej4d1J2oMNpSIiIiIIthQotwRkYdFZJ+IdItIS0/SKyLrROSYiOzyyiaJyEsi0lX4f2Iz6xgjIjNF5FUR2SMiu0Xkx4XyXNS/HJ5H9TfUzyEaHthQolwp5Hn6FYBVABYBeEJEFjW3Vql+h0sZzn1rAGxyznUC2FRYb0X9AH7qnFsIYCWAfyu813mpfxTPo4YZsucQDR9sKFHerADQ7Zzb75y7AODPAFY3uU5RzrnNAPSkTKsBPFNYfgbAo42sU6Wcc73OuXcLy2cB7MGliaxzUf8yeB41wBA/h2iYYHoAypvpAD711nsA3NqkumQ11TnXC1z6QyIi8TG7LUJE5uBSQtLtyGH9DTyPGmwInkNNde7cuei2LVu2mOVpQ/Dnz59fdR1OnTpllk+YMCH6mBEjRlT9Os3GHiXKGyubuWt4LYYRERmHS5M3/8Q593mz61MjPI8aaIieQzRMsKFEedMDYKa3PgPAZ02qS1ZHRWQaABT+P9bk+kSJSDsu/YH7g3PuuUJxbuqfgudRgwzhc4iGCTaUKG92AOgUkbkiMgrA9wBsaHKdqrUBwJOF5ScBrG9iXaJERAD8FsAe59wvvU25qH8ZPI8aYIifQzRMMEaJcsU51y8iPwKwEcAIAOucc7ubXK0oEfkTgHsBdIhID4BfAHgawLMi8gMAhwA83rwaproDwPcB7BSR9wtlP0d+6h/F86hhhuw5RMMHG0qUO8655wE83+x6VMI590Rk0/0NrUgGzrktsGN5gBzUvxyeR/U31M8hGh7YUCIiIsqZ2OSyALBt2zazvKenJ/qYyZMnV12HI0eOVP06Fy5cqPp1mo0xSkREREQRbCgRERERRbChRERERBTBhhIRERFRBBtKRERERBFsKBERERFFiHOc3oiIiKgWRORfAA4WVjsAHG9idVpBnt6D2c65KbqQDSUiIqI6EJF3nHPLm12PZhoK7wFvvRERERFFsKFEREREFMGGEhERUX2sbXYFWkDu3wPGKBERERFFsEeJiIiIKIINJSIiohoTkYdFZJ+IdIvImmbXpxFEZJ2IHBORXV7ZJBF5SUS6Cv9PbGYds2BDiYiIqIZEZASAXwFYBWARgCdEZFFza9UQvwPwsCpbA2CTc64TwKbCeq6woURERFRbKwB0O+f2O+cuAPgzgNVNrlPdOec2AzipilcDeKaw/AyARxtZp1pgQ4mIiKi2pgP41FvvKZQNR1Odc70AUPj/qibXp2psKBEREdWWGGUcYp5TbCgRERHVVg+Amd76DACfNakuzXZURKYBQOH/Y02uT9XYUCIiIqqtHQA6RWSuiIwC8D0AG5pcp2bZAODJwvKTANY3sS6ZMOEkERFRjYnIfwXwvwGMALDOOfe/mluj+hORPwG4F0AHgKMAfgHg/wF4FsAsAIcAPO6c0wHfLY0NJSIiIqII3nojIiIiimBDiYiIiCiCDSUiIiKiCDaUiIiIiCLYUCIiIiKKYEOJiIiIKIINJSIiIqIINpSIiIiIIv4/XIxD61igUvYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x216 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "image = create_captcha(\"WOOF\", shear=0.25, scale=1.5)\n",
    "subimages = segment_image(image)\n",
    "f, axes = plt.subplots(1, len(subimages), figsize=(10, 3), sharey=True) \n",
    "for i in range(len(subimages)): \n",
    "    axes[i].imshow(subimages[i], cmap=\"gray\")\n",
    "plt.savefig(r\"B06162_08_15.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAACLCAYAAACuhKeAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAB/JElEQVR4nO29abBk2VkdunbOJ+fMm3mHmqsHNVJraEmNEJMmJCOBmBQgtwAHhHmWfzzbOOwXRs/hCMd7ES8s4wgHRDzCYYWNLQKMQYgHGkBCCA0IZIRaCDS0elB313DnvDmfnDPP+3FrffWdU5n35q26U1XtFVFR+96bmWefkydzr/1961uf8TwPFhYWFhYWFhYW8yN00hOwsLCwsLCwsLjbYAmUhYWFhYWFhcUBYQmUhYWFhYWFhcUBYQmUhYWFhYWFhcUBYQmUhYWFhYWFhcUBYQmUhYWFhYWFhcUBETnpCVhYHBSRSMSLxWIAgHQ67ftbOBze9/nj8dj382AwkHG73Z75uOOCPgeeJ6HPd55zPWpoG5TRaOT7m+u6Mu71erfz2ub2Z2ZhYWFxtLgjAmWMeTuAXwUQBvBfPM97/6HMysIiAGPMewG8FwCi0She8pKXAAC+7/u+z/e4bDa772vV63Xfz1evXpXxF77wBRk3Go3bne4dQZOkS5cu+f6mz3eecz1qaNK0tbXl+9uTTz4p469//evHNicLCwuL48BtEyhjTBjArwF4G4DrAP7aGPMRz/O+Oes5juN4mUwGwMnunoPmoXoRuNNd80liVuTioFELHXnR0RlgvgjNUUQOPM/7AIAPAEA6nfZSqRQA4OLFi77HvfSlL5Xx4uLi1NfqdDq+n69fvy7jhYUFGX/1q1/1Pe6FF16Qsb5PJpPJPKcwN/Q1D96DmjS99rWvlfH58+cPdQ7zQt8DrVbL97cHHnhAxmfOnJGxJqxBksr7S19fCwsLi9OIO4lAvQ7Ac57nPQ8Axpj/CeDHAMwkUJlMBu9+97sBnOzuOZhq0Dvnu3nXPCtycdCohY7Q6MUOOB0RGgsLCwsLi5PGnYjIzwK4pn6+fuN3Phhj3muM+bIx5svdbvcODmdhYWFhYWFhcTpwJxGoaWmaWxrr6dTLysqKxwjISaYfgqknnXo4aNpBp7SOMq0zD3R6jikuwJ/mOmiKS6e3gNkpLqa3bOrF4m4A5QTGGPl33KCUYDKZyPfFaDTCcDjEZDLBeDzGcDg8tOMZYxAKhRAKhWCMQSQSQSQSQSgUknEQk8kEnufB8zyMx2OZ63A4xHA4lL8dRk9VzssYg3A4LHONx+MIh8NzvVd6Pq1WC91u1xYiWBwZ7oRAXQegmc85AGt3Nh0Li/lAEhxMST788MMyfuSRR+Z6rWazKWNNKldWVnyP+9znPifjp59+eurz9dxuFzpSW6lUfH9bX1+XcTKZlPFjjz3me1w0GpXxSZADADh37pyML1y4IGNNvIMEfXV1FQDwta997dDnowsR0uk03v3udyMSicgCfZwgIfE8D71eD67rYjweY2dnBxsbG+j1eqjVatja2rpFcnBQkIiEQiEkk0k4joNoNIrFxUWUy2XE43GUy2UsLCz47hXP89Dv9zEYDDAajdBoNNBut9Hr9XD9+nVsbGxgPB7LY+50jolEAtFoFLFYDLlcDslkEul0GhcvXkSxWEQ4HEY8Hp9K9IjxeIxer4fhcIjf+73fu6M5WVjshzshUH8N4GFjzGUAqwCeAPDThzIrCwsLi0OGjoYvLS15kUgEsVgM6XQa0WhUIjGh0NHb4zGSQ5LS6XQwHo8RDocxmUzQ6/UQiUQwmUwwGAwwHo+FcOnn8ucb57dv5JuRLZ6jjkYlEgmEw2FEo1FEIhF4nieRpvF4jEQigVQqhV6vh263i8FggOFwiHa7jVAoJK99uxsIRpdCoZBEoPgekVylUinEYjF5THBzMBqNhEDtRbQOC7FYzEsmk3LdgvOZFcHr9/u+9/NOwfdRXxeSUX1d9wLnyvdxMplgNBphMBj4zuN+xKzCqNu+wzzPGxlj/gmAT2LXxuDXPc/7xl7PGQ6HsoOetXvWO2fg+HfPB901c8cMHG1UYh7oY+ixjtIcNEITPI9ZERpGZ44icmBhcdgwxiAejyOdTqNcLsNxHMTjcaRSqVu+g44CXFCB3apLLqjb29tYWFhAr9fD1tYWMpkMer0eer2ekKzhcIjBYADP8yTlx9cbjUayyOn/9cI4HA5hjMFkMhHylEwmkc1mEY1GkcvlkE6n5TF87UajAdd10el0ZHEeDAaoVCqo1+sYjUYSSTso9CJP4hSPx5FIJJDJZJDP5xGPx1EsFpFMJoXwBd+r0WiETqeD0WiERCJxh+/S/kgmk3jjG9+IQqGAc+fOIZFIIBaLCXEhAdURPNd18dxzz2F7exuDwQDNZlNIMt/LgyAcDsNxHHkfi8Ui4vE4VlZWcPnyZTiOg2QyiVQqJQQrGHEdj8fodrsYDofodruoVqvo9/vY2NjA888/j263i06nA9d175go30u4I4rued4fAfijQ5qLhcVcGI1GqNVqAG5N4Wlirr+I9iLiunrx9a9/vYy/4zu+w/e4N73pTTL+5V/+ZRkH7Q44t8NA0LPqox/9qIw1gX300Ud9j1teXpZx0IzzuKD1hJp4v/GNb5Rxv9/3PYdaun/2z/7Zkc6NOptoNArHcZBOpxGPx5HL5RCPx4/02MDNaBFJENNknudhMBig2+0KGej3+6LTHI1GsvgFI0+e58l9HlyE+TdGQPhckhYSFpLKfD7v+8yMx2NEo1EkEgk4joNKpYJGoyHpx263i1AodCjWL1rrxPcoHo/L+0SSy2iUxmAwQCKRwHA4PLK0rE4FO44jOq1MJoNUKoVsNotcLud7n8bjMZrNJlqtFlqtFkKhENLpNDqdDjY3N+G6Lnq9Htrt9oFTtsHIXSQSkfs6l8shlUohl8uhWCz6iKl+f3mvDYdDdDodVCoV9Ho9xONxmVe9XocxRqJ8lkBZJ3ILC4v7ECQqjMZQX5NOp+E4DoCjjX7rdMhoNMJoNMJ4PIYxRnQ8epxKpSTKwxTaeDz2Ra9IXnQKRkMLwI0xGAwGGAwGCIfDQuAikYhENBipYFqRi3Kn00GtVkOn00G325WUWb/fl7ndbrpn2vM0KWAaMRqNIpvN3kJ2h8PhkafwdCq4UCh4ACSSF4vF5D7Sx+d7y9RkJpORjVs8Hpfrf7v3HJ83jUjxujFyRx1ckEBFIhEhnkwh87GM6DG1e1K6ytOGYyVQ9XpddtCzds965wwc/+75oLtmba74H/7Df5DxUUYlZkFXBOrj6SjNQSM0wVYpsyI0jM4cdeTAwuIwMB6P0Wq1JNUSiUTgOA5KpRJYnUddyVFDp9gWFhaQz+fR7/dRLpdRLBbR6/VQrVZRqVQwHA7hui5c18VoNEK320W73cZkMkGz2US9XpdUkK6SI5liOmkymaDT6chzmSYMhUKIxWLI5/OIRqNIJpNIJBLwPE+iYd1uF8YYOI6DVqsl16jb7aLb7Uqa5yC6GV09F3yejkDlcjkUCgUkEgkUCgXf9xlwMxU1Go2OJRWrrx0JaSgUQiqVEsF7NBrFZDKRiFOr1UK73UYkEkGj0cBgMBDiyjTtQQiovnb6+gEQUuc4DjKZDCKRiKRogZvf+7yXeH8ZYyRtnM/nhVxR79bv92GMuW81UYSNQFncdRiNRtjZ2QEA/Mmf/Invb9pmYV57DC2u1GSTrvmE1lT89E/frJcIijM//elPz3XceRAMk/O8AeDzn/+8jMvlsu9xP/MzPyPjWXYVQejUgSbg2lwW8BN1TTCCmx1NsLX2rlgsyjj4BVwoFADgloXxsMEIFIkFU0Xcqety/+PabXMBHI1GElViVAeApPoodB8Oh3LvMfLCqAcjHnxdQqfuqJ/SQvHJZCLROBKoVCoFz/NE8xSPx1EoFNBqtRCNRiV1BUCE1PzHaMVBSFRwzgB8gnKmoFilp0EhPv8/akwmE7TbbdGqsaIzl8vBcRykUimJaJJotdttjMdjZDIZ7OzsoNfriTC+Xq+LjYVO0c4zD02U+T7qiFihUBAdWS6XuyVFy8id67qSuuv3+9ja2kIikcBgMJD0o/V03IUlUBYWFvcdhsMhNjc3YYzB8vKypFe63a5Uo3FRA46nmEVHwrjjJ5mi9oiRAkYq2u022u02BoMBVldXpWqv0+nIgsr0oAar/5rNpmxISJaWl5fRbrcRj8d9gmgAoqHJ5XJYWlpCMpnE9vY2ms0motEo0uk0EomEpBdnEaJp4Fz5j0RCVwYyNcVU2KxryPFRg4RXk1GK8zlXnWZktWI6nUYmk0G/34fjOEgkEkK+QqHQgYinnkvQl4sbAaZiGRHT7ykAEYWHQiGMRiPE43F4nue77toOw2IXx0qg6HMCzN49650zMN/ueZ6d86xdM+DfOR9018wdMwC85z3vkfFRRiVmQX9J6kiFjtIcNEITPI9ZERpGZ446cmBhcRjo9Xp4+umn0Wq1kMlkhJAsLS35FhhGe44rnUdyMplMkEwmkc/nJTpA3ZNeqFutloi5v/nNb8LzPLiui1qtJoQEgC+tw58pWI7FYvJzNptFsVhEqVQSHVQ0GvUtvpFIBGfOnEEul0O73ZZ5NRoNVKtV1Go10fNMW9SngZYJjJwxnciUGAXusVhM5jDt/eB7Ns3i4CgwGo2wvb0Nz/Mk0hOLxbC8vCzeWLTIAHbXGpLURCKBdDqNarUqa9Dm5qbo1Pr9vi8VOgskcdSpMb1G4T9JMK/dLOLJ93k4HAqB4s/UC+oUsIWNQFlYWNyH4IKfTqfRarWQTCbhuq6YQnIBCofDx6rzYOTL8zyEQiHRz3BBpaUA/7VaLaRSKXS7XWxsbCCZTIpeieLvaQsmCQsX31arJb5T7XYbnU5HCAw3ZjoSQSF3OBxGNptFOp0WoTG1R5p07hdNCVotaM8kRnP4T6dWg4JmateOS+g8HA7FjmA8HiOVSiGTyeDy5csizGZEkQQmGo3i7NmzorerVCqIRqMYjUa4evWqFArowMBeFW+6MCAajUrKlxEkTTxnRe54r/G+4IaYBIqfC03eLSyBsrgLMR6Ppbxfl/UDfu+uV7/61TLWkcJ5q3OCX8A6evcTP/ETMl5b8xvw/93f/Z2MdUT0Th2lg9CFCsEv2O/8zu+UsY4KBjUjGtpNemNjQ8af/OQnfY978cUXZawLKnT7IAD4wR/8QRlTBwIAuVxu6u8BoFQqAbjVD+6wQQ1Up9NBvV6XCrONjQ1JsfA+4a59vwU52JqFxwiaJvJxmlzwf22EqNNRjIJpI029iMXjcZRKJZw7d06EvlzwGo2GkC8NkhUtGA6Hw6hUKlhfX0cqlZIIFNOZ8Xhc5sWoSyaTwcLCAiKRCJaWltBqtXxVhAc1jAxeZ21CGdRJnYZqMKbver2epIE7nQ5isZjoigD4TFr5viYSCdFzOY4j6TwS34Maber3+HaJ/14tcyxx8sMSKAsLi/sOrEJrNBpYW1uTCjPHcbCzs4NyuSyVXp7n7Uu6g5VuJE3NZhOVSkXK1LVGhguU1pbQsycSiUg0g5EkLSrm8ahbonfUeDyG67pCmjudjqT6giApoZaKFWUvvvii6JlI+tn+hRWKjGgYY7C4uCjRMJps8vX6/b6c8zwbCE0mtQheE8e9SMW8KcPDAiM2nU4HzWYTvV4Pq6urePrpp5HNZiUalEgksLi4CLqWU6SfyWSwsrIiKeNGo4FarYaNjQ2JRJGI7odppEeT7Xn1aPr6aXNTkvs7sVu413BiBGrW7lnvnIH5ds/z7Jxn7ZoB/875oLtm7pgB4F3vepeMNzc3fcfQLuW6GbGuZjjMCIU2YNRRmqOK0DA6cxztEywsDgMUOruui0gkgmaziUajIf43wRYq8yAo3GbVFSMRrPybFnVidIIRCGqQGO0JkgK9IIbDYam0isViyGazcBxH0jjTFjz9miR9oVAI7XYbtVoNw+EQzWZTmovz+0kv1IzcsVIvl8shn89LbzuSv3kW3GBEbto8j4sYzQteO2OMVCVubm7ixRdf9Bl+0mCT146aJzrhM21br9eRz+fheZ5oqxgl3Ou8p107nRLdT0u117UNRkUteboJu9pZ3JUg6Q46df/5n/+5jHVxwt//+39/6u8PAl0Wnc/nZfz93//9vsdtb2/L+Hd+53em/v4woMm33iAAwP/4H/9DxpqYazf1IPRGRL920J5ANzR+6qmnZBzUVuiWR9/85jdl/CM/8iMyftnLXuZ7ztLS0sz5HQVGo5EUmEQiEWxsbEgq68KFC1L9xmswqwpJp+doNzAcDtFqtbC9ve3zUOK9y8WKJCkUCmFhYUH6zgEQTRGJFoBbolf8ez6fx8rKikRDqtUq2u02Go2GEEIdydLu5SR9/X4f9Xpd9FT0pcpkMiiVSuj3+7dokRzHkTYwi4uLGI1GSKVSWFtb80Xf6LQ+bSHXbtpBCwm2qCEp3Y/UHjTtdVhgFVuv10Or1RJBP/VkFMnrc6PvFtN4mUwGk8lEfKRoCMrqvWnnHCQ2+h7Vac95hPyzKvn0e2NJ1E1YAmVhYXHfYjAYoFariXB6PB5L6ur8+fOIRCLIZDJCoKgJCpIonWJiVIt94q5cuSJ95FqtllQxBT2owuEwVlZW0O124TiOVEPRAZpz0FVmfJ7neVhZWRE/Ika/eNydnR2fEFiL0QG/D9Da2hoajQZSqRSSySTi8Tiy2SwWFhZQKpV8wmRjDDKZDOLxuBhs5vN57OzsYGNjAzs7O2JsSQJEIhFEsNyelXa8pqwAm+ayrt8HrZc6DvD6kyhub29jMpnI+0aCWSgUUCwWpVCA51gsFqWVEADxiVpbWxPtGa/ZNEsK4CZp0lWjAHxknm2AZl073pOasALwCeA5Z2tlsIsTI1Czds965wzMt3ueZ+c8a9cM+HfOB9016x2zjkr80A/9kO8YOhX5sY99bOoxgmm/O4H+kOkozVFFaI7DtM7C4rBBnQ4rpkhwWq2WtCmJx+O+ViuzoBdv6p36/b54NbGfWFATxEWJi22xWMRkMkG325W0GgCfRxARFHQzPcRWIUwFsiw9KELXVgMkHYySaZ+pSCQilWH6mAB8EbJMJiPnziiKbhEDzJYq6EgKK++CwnlNjvaKMh1nmo/XkOdF0X48Hke5XBZLA4rrdTUce+JRNM6edJubm8jlcqKD4jXmNQgeX0eIeC8BN9sEaaPUaddmWhUkjxP03jouS4+7ATYCZXFXI/hl8swzz8j4z/7sz2SsSe+rXvUq33N0dd280IQx2HRY6+i+/e1vy/hv/uZvZBwky7fzha8XkGAq8zOf+YyMz5w5I2OtgTt37pzvOdrwT+sNg9fYdV0ZN5vNmfP71re+JWMtYtabmbe85S2+57zhDW8AgENpSjsP9EJMITa1KGtra9JeJRKJiMh82g5cE5Cg5kSnohgFosM4F04dVTLGIJlMCrHTEYxIJOJzS+fiFiQ1NLpMpVIibu52u6jX69LuhQRRa7Y4Nma3V16z2cTOzg6GwyHW19eRzWaRSCRQLBZF66SPzV51g8EAi4uLuHDhgqRI+ZqNRuMWEhUkAfpaBOcXrECc9j4cVwqP5x4UuDPaQw1cOBxGvV5HtVqVz5m2W+D7GIvFxA6hUCjAGONr9EvN1bR5TEut6ftyHh1UMOXHeQb/WezCEigLC4v7FowcGGPEmbvX62FjYwPPPPMMdnZ2xKk8n8+jWCyKODj4OtNSICRITPN0Oh3RyFCorYlDrVbDzs4OYrEY1tbWsLGxAcdxcObMGVy8eBGJRAK5XE4qA1nNxXQeyVi5XJboBc05O50Orl27huvXr2MwGKBarYoTOaNLvB4kINvb274my1zcH3roIUlRseebMQbpdFrO94EHHhBxNQlCt9sV+4ggdApPp6O0eahOBc4iAgcV/t8JQqGQ6Ms0GSWR3t7expUrV5DJZJBMJjEcDpHJZPDggw8KcaIDueM4yOfzcBwH58+fx6OPPopmsymVmK7rYnNzU0g+oQmY/gdAChf0dZtGLmfdvwDExkK/tiVRuzgxAjVr96x3zsB8u+d5ds5HtWvmjjk4v8uXL/teV6cT9Tlpl/DPfe5zMtapRJ2ivB3o63DQCM3tRGcsLO4W6IWICzWwKwWguWQymUSn00E8Hhd36FmvNU2Eq00feQwKymnaqdNW1BjF43HxB0qlUtKkN5FIyDxZvaWfD0BITzQaRT6fR7vdhuM4aDabqNVqCIfDSCQSQmR05CIohu90OkKEGo2Gr2GvNrMkAeL80+k08vm8ECtWBZJsBUmA/hdMFenoyTyVeMeVwiNx1RYTep70GaPhZjqdRq/Xw/Lysq/ymYQxHo8jFAr5IojtdhuVSgXhcHhmU/rgPcT7IGhMuhexDKZJeU7T9FU2hbcLG4GyuKegU2Nf+9rXZKxtJIKpqzsliSsrK76fX/e618n42WeflbGOWmgbD8A/76DNxjwIprz0RuALX/iCjC9evCjjd7zjHb7naEsOfU2Cmji9SQmWTWvojZEef+Mb35BxsDKRxGCab9FRQqdeAIjwmlVQ29vbUkHFa6MF5UESoSMpwdfnDp9RFV2CTuLGxsBcVLk4kgSxAW0ul5PUnrY8YCPgaDSKYrEoRo+6UiyZTAoZq9VqqNfrvjkCu/cVo1SVSgWJRAKZTAaLi4vSnJbnzv9jsRhGoxHy+bxEwCqVCjqdDlqtFnZ2dkSwr9u3BPVZOlqiq7/2qwI7zjQTo33tdlvSa5y3MUaa804mE9TrdVQqFXHBz+VyiMViQnZ0A+RkMolCoSAEmO8xI1laUK51bMHiAODW9N5e105rz/S9O+1/C0ugLCws7nNwQaBGaTgcIhwOY21tDdVqFcPhENlsFq7rYjweo1gsitUA03n0YqKtACNDXBAZ0dHEiXooQkeptH4mFotJn7lYLIYzZ86gXq/DcRwsLS1JPzv6DZHE5HI5eS3qkrLZLMrlMnq9nqTzer0e1tfXpdrLdV1JEzFCxXnwNQqFAjKZDBKJhI88arHx4uIi4vE4ms0mWq0WJpMJms0mms2mVIa1223p3QbcjILopsIAfJGPvUiUjmAdR5QkkUjgkUceQbValRQlnch5/Ug84/E4er0eFhYWRFdHD8JUKiWWBgDEzqLT6Yg2j0alruv6rh0JPIlTMH0cNMKcdd14r+p0oBbxzxPFut9wKgiU3j3rnTMw3+55np3zrF0z4GfUB901a0Hf61//ehlfunTJd4xHH31Uxi9/+ctlrMO4Wlj5x3/8xzKuVCo4LBw0QmNTeBb3C7SgfDgc+py9O50OEomEVMYNBoNbHML1Dl9750w7xiwxNL2Y9CI2GAykkS9JGyu00um0RCzZFJiLJau9HMfBZHKznx41T41GQ/yb6vW6zyaB58I0HgCJIIXDYXQ6Hal41v3y+Hxgl1wwSkJLhOFwKI1tAdyyoO/lWTRvBOo400uRSAT5fF76x2kRPklzr9eD53mSRqVTe7fblco7VioyoskWOXQrZ+N22kpQvK7Xn+A1C6aQ571u00goX+sk/LVOM04FgbKwsLA4aWj9CsvO6STNFF4sFsP29jZGoxGy2ayPCGitCH8fi8XEM4mCb+7spy1mJDpMzUwmE2noyrQdRcrJZBKTyUQq8wqFgvysdTAUKetoFEkXyRCjYtzMsnce7RRGoxEajYYs+FtbWyKoJyEiYaOonG1LmPZkf7jFxUWpAGTEZFoZvRaz6+u7X3SJ78FxEKloNIrz588jFouJz1coFJJIpud50tan0WgIsdre3hZiRBd32k1oAhWLxVAsFlEqlaTfYa1WE9E/CZSuAN0rArVX5E5HECORiBDBYDuYeTRo9wssgbK4p6CjeHp3pm0H9opAHsaXbrFYlPHP/MzPyFi3KfrLv/xL33P+03/6TzK+du2ajOfpgbUfvvjFL8pYp4wee+wx3+O0j5mOPP78z/+873HValXG2pohWOwwz5fsl770Jd/PV65cAXC4nmjzQlfkMZ3HhSebzUp/t3w+D9d1US6XpeqMBEI7S7NCy3Ec9Pt9cRVnRZMWlxNa90MPKa2tikQiqNfraLfbSCaT6Ha74vVEXVEkEkE6nZa5aSf1hYUFMaZMpVJIp9NyDGA3yjQajSRNNBgMJNpGj6h0Oo2FhQUkEgkRqjM6xvYz4XAY2WxWRO9sX5XNZtFoNOB5nmi9eA4kGiQGjGwFRcxaWxYEU1HHFYVyHAePPvoo8vm8WDSEQiG4riu2DYw08fp2u10sLi4C2M1AJJNJjEYj5HI5aWKdSqXgOI5YGHS7XbTbbbRaLQwGA2kPRBKqK+14/ZhC1uLvva4N/8ZIGK+91lsdZ4Xj3YBTT6Dm+fKf54t/1pd+8HUP+qXPL3wAeMUrXiHj97znPb7n/PiP/7iMdb+47/7u75axrtTTc9SpxDvtl3dQgjEtjG5hcS9DR0MASMUcowysyKNpZDCNp8kOheZBF2cdRdEkKri7DxLoUCiEVquFVqslDXxJ7LjQMtpFITPnoKMPLKfPZDJi5phMJuF5nrhfa20No3I8L2pxKHxn2pHH1McajUbiXTUYDJBMJkUITRG1FqLra6BF5Pr//b6Hjut7ikSx2WwinU5jOBwKidTXj6Q1FAqh2+1KtCoWi8n14/exrqZjNIrRRqZCJ5OJ79oROopHaEH4rOsSTPPpFN606lJLoHZx6gmUhYWFxUmi3++jVquJ5UAmk0G1WsV4PMbS0pJUVzL9oj2ZCoUCLl68iIWFBYTDYelLNxwOsbW1hcFgcKDqJkaB2OeOpCWRSKBSqaBSqSAej2NpaQnLy8uIx+MoFouSXgNuLpapVAqlUklK5UnIWq0WKpWK6KW4wWSkg07Z4XBYUlCMRhUKBV/UiAsxyWYikZDUaLVaxc7OjpT565SU1ooFbQ320/HMo/c5LESjUelGwR6EnudhfX1dIpl8j6lva7VauHr1Knq9HsrlMrLZrJz38vKyXD+eTyqVwuLiIjKZjPRprNVqqFQqaDQaEiUE/ARc21sE9Xj8WxD6PQs+Pqh/CkZP70fsS6CMMb8O4J0AtjzPe/mN3xUB/A6ASwBeBPBuz/OmG1RYWJwQtPfXk08+KeMHH3zQ97iHHnpo6vODKSk6KgN+Yb8uBAD8xQsM1QN+vzLd2gfwRxk/+clPyvgrX/nK1LkdBNr3TBdpfPjDH/Y9Trcreu1rXyvjYINf3Tz5hRdekPGf/umf+h43y7NGI2hXwGt+p95nh4ler4etrS1Eo1G4rot+vy+E4OLFi/K+as0Pq9OWlpZ8KTz6MHW7XVy5ckXMF7WP0F7wvN0GtRsbG9J6Zn19HbFYTHrVJRIJPPjgg+h0OnKfZTIZ30LKtCQr66LRqERSqtUqVldXfQ2QdYn+YDDAlStXUKlUpA9eJBJBoVCQqkCSNabeqJfqdrsIh8Mol8vY3NzE+vo6tre3JR2lz1Mv2NMiJPp6aTJwnFHyaDSKc+fOiRaMqTXal5BwUttGkvjCCy9gY2ND/KAY3bt8+bK8ZyQwFJPzMfl8HltbW7hy5Qq2trbQ6/V833XazHPWdQNuJVGMmAU1U/q9CEaf7ncSNU8E6r8D+H8B/Ib63fsAfNrzvPcbY9534+dfOvzpzfflP88X/6wvfcD/xX/QL/1ZX/TB9h4PP/ywjB955BEZZ7PZqc/5yZ/8SRl/9KMflbEmAneKeQjGLHIB+M+d5OJOU4wWFqcNTL+wrNx1XSEy3P0H3bG5+FGEHovFJE1GbyTdH06nAPdbkBjJGI1GchytD3IcB61Wy6fDIUnTUQVt3MjKPoqZqYPh63J+PEfqlowxUlFGTykK4LU/FlOInudJqst1XdGFUeAeFIjfzuJ8nASKmjem2Xj9EomEnBu1RdrfiiJ92h7o6k7ql3jN2HwYgJiq0sMrkUhgPB4LwdpLYH8nRCdIUKfp9+5H7EugPM/7vDHmUuDXPwbgTTfGHwTwWRwRgbKwAABjzHsBvPek52Fx/0FXxtFYcjAYYHt7G9euXcNwOJTCAZaZMxrFhY8RnnK5jGg0ikajgXPnzok4nf3hKNjdbz58LAmRtj3o9XqoVquoVqvo9/soFAqo1+uIx+Oy6JLgcJFOJpPIZrMwxmB5eRmXLl2C67oidqeYmREzkjKK2jc3N9Hv97G6uipNhHO5nPhSkURRx0PR+MrKCmq1mqSmdIk+yQANN3U7klnFFcet0TFm13MrmUwin88jHo/jzJkzeOihh1Cv1+U+oPCb5LvX62E4HKLRaGBjY0OqLRcXF8Vegl5ROiWcyWREU3Xp0iXxh4rFYhJs0EJxpmB5/+rKxlnXbVYzYRJqbdNwv+N2NVBLnuetA4DneevGmMVZD7QLn8VhwPO8DwD4AAAYY+b65OqUm/YTe+lLX+p7nI5a0m8FuDW6qKOT2kMrmOLSuzUdYdRj3ToHAH72Z39WxvTXAYDnn3/e9zgd/bydCj19Dh/60Id8f9PFGDoKqa8J4L9euhAhONennnpKxtN6n00DycNp+nImgQJu9muLxWJYX1/Ht7/9bTQaDSwtLckCl8vlfEJiNpstFos4e/asaF5arRbq9brYInBR3a/KSTtdM6XGKNFoNBLyQgKTzWaRz+elj56eF/9RTB6Px3HhwgU0Gg10Oh1ZwEmc6I2lHbC3trYkPcnWLalUCufPn5eKPFo4sE0JdWOXL18Wg81IJCKVZ4zqUeMV7IWnm+IGIy77Nc09TBhjRLDPxs9nzpzBgw8+KBV57JNH80tGoYwxaDab2NzclHMtlUpoNBpYWVmRSBZtMCaTiVRWArutw0jCWIlJKwrtZ6avm244HUTQBZ7fL6wc1RV9tphoF0cuIr+dhW8WZn35z/PFP+tLH/B/8R/0S18vYizVDb4m4E8/akNQx3FkrM/jXe96l4x3dnZkrFuDaIIAHNzkbB6Coa8bMJtg8L05jLJ7C4ujwJ1s5rRbOXfgbArMvm/0aRoOh76UHP/Rr2k0GiGZTCKVSolwm+m8eXf3jBYwOkQXcbp69/t99Pt9RKNRGdPDieQLgC8FyIXScRxks1mxYaCeS1fq6mhFv9+Xc3ddV75XmPbU1YbaJysej8NxHKTTafG14vUJ6sIO4kN0ElVimijzftBVcwCEQOrzmEwmov/itYtGo8jlctJGSEcyNYFPJpMSkWJqmKndaS1epumXNGY9NmiBMM1g837F7RKoTWPMyo3o0wqArcOclIWFhcVhI7iZu51FQKev6vU6VldX0Wq1xBaALTwKhYJv4QF2iwgKhYI4mtPXB4C0AqHhZbCh6x7nJP90FRvL5CeTCRqNBur1Ovr9vtgvADetS0juGOVYXFyUNjJclF3XldcMzq/dbosQnB5m2WwW6XRaWt1w4WWqiq1n2Eey1Wqh3+9LCnJnZ0faxwDwpZW0F9FeJOCooIk4G8gzysY03Ete8hLRmDLyxCo9nUobjUZS4cn2QIxQFgoFpNNpcYvnNSShvXDhApLJJKrVKiaTCba2ttBut7G5uSmENhi909HL4HULOuTzcUz90o5Da+/ud9wugfoIgJ8D8P4b///hoc3IwsLC4hhAkfPtECgufM8//zwSiQR6vR4ymYw4US8tLUl6jBGoRCKBhYUFWYBouDiZTKSqjtEj3ZR2L+gKKaYBGdWq1Wro9/vY2dlBPp+XXnnFYlFEzQB80bFwOIyVlRUkEgm4roteryeu7LVaTXoD8p93wxCTaTj6VBWLRRSLRSGMNBoFIETRGIMLFy4gn8+jXq9L+lEXtySTSYmyBXVQe71HrEI7Cmgi/vjjj3sAfK1zWJVLfVKtVkOz2cT6+jri8bjPeZ0O7xTlR6NRMUFlNoWNoZkO5X2yvLyMdDqNTCaDRqOBaDQqxFNHxKYRzxnn5SPGLDpgZJIGsHzv7vfoEzCfjcFvY1cwXjLGXAfwb7FLnH7XGPMLAK4C+KmjnCShu9TrFNnnP/95Ges+bm9961tlrPvlvepVr/K97g/90A/JWN8U85SQ68dr8Wfw5ponZ8wvGMCvq3n1q18tY53CC7pZ64rFeXDQ6wn4r6nW9LAp5mnamcxzfsDse0afH3DzHAFga+tm0FX3EQT8aeC3ve1tMuZuG/BbGgDAAw88IGNdMXr9+nXf43TFqLY+mBezrgkw3+cImP1Z0p8j4OCfJeD0p4A1YWG/vMlkIgabjuOI3mU4HApRYdqDUQr2tAMgLTx0OxQdAZjXHyoYPQg2L9b6qmnfTyR18Xhc2ovQEZu93qih0ak56rDMDVNN13URj8dvSR1qUTIXeAruh8OhGGzSJJKiZU32TrOJo05RxuNxqchjqpbESFdF8tyo++r1etJeh2ScKUEt5uZxWBTAlHC/3xedFAnxvJolfQ+QrAVb6PBxVgO1i3mq8N4z408/cMhzsbCwsDgWsHpqr8qkaSBR8TxPKqtotEljzGg0inK5jE6ng3Q6jWKx6OuNR9F2oVCA4zhYWlrCuXPnkE6npSFtr9eTRXQ/Uqn1WTRtpL0Cq6Z02i2oc9GWA9FoVHSZFDUvLy8jlUpJdGMwGKBarcqGjdWJTBcyVbe2toZsNiuvx6o9Gm9S98SFuVQqYTgcIpVKYTAYiB4rnU6L7cN+ZIBl/8e9yPO4JE0Uj6+srEiqlpG6TqeDtbU10Y2SaDIS6DgOMpmMmGxSixuPx6UYwBgj1zYUCuHs2bNyrYBd/W4mk5Gq0P16A+rKRxqzkrzp9kM6omphncgtLCzuQ9C/Z790UBA6+tLv9yW6lEgksLa2JukTpqUWFxeRSCQA3NTJMOrgebuNZhuNBiqVCprNpngp0cPJdd095xcUkzOyQWFyJBLx9UnTBEqDBIDC8Wg0Ko7m1ENR60VjSN27jqXykUhEKsGuXr0qKSm2r2JVGUkOSSMdvZnWBHYjvuzrxwjdfhFufR7HTaA4N1asUQy+sLAgpLrZbEr1Jd3fqX9iyo+EfHNzE91uVywSSJAYDWJqdDweo1AoyBw6nY60G+K1DrrQz5o/rx8tJxjx4mvw73zOaY0GHhcsgbK4Z6E/3NrlONgLUVcWXrp0ScZBM1Tu7gDgNa95jYw/85nP+B6nf9YpuO/5nu+R8ete9zrfc3S6UKdsg5WWL774oox1ZWfwcbMw65oA/usy65oA/uuindZ/+Id/2Pc43X/y6tWrMj7M3o53At277aBgJEpXwPV6PUSjUXS7XXQ6HUSjUfR6PZ9nExcqLlKe50kKhiJi6mT2ixoE5zOtWk17S2l9yywSBdzU87BXHSvjmI4CIAszX0OnDRn94nUIh8MiRmdzWh35YmSDYmVeBxp66t5887ZzOU5oLRn/J9HQ6dBcLodisYhwOCxROK114/tljEGn00G9Xsd4PEaxWJRIJNPDJC/6OEyF5nI5iRgx+qTTw/q5066dvj+ZaqYBKt9/pnN1yvh+xF1FoOZZEOdZDPWXPuD/4j/ol76+cbR/TxDarkCfhx7rMuFp+iLA33BYNyUG9m4CPA0HvZ7A7GtKcqHPwcLitIJNYBlF4qIyT6d5/l0/vtfriWg7Foshk8kgm81KRd54PIbjOL5UCRehYrGIc+fOiaBcV7s1Gg2pzNPC6Glz1CSq2+2iXq+L4Sd71uXzeWn3wusQJCdcZKPRKDKZDBYWFuA4DprNJkajEdrttvwbDAZiDmmMEV0YsKsTjEQiyGazSKVSCIfDogPS+hwSNpb+O44jnkfByJjjOEIGdAQkSAaOi0QxEqcbNuvrmcvlMBgM5P9EIiHpT6buNKHtdDoIhULY3NwUF3sAPid7RvQY6WK/QxJc6s80GMHSDYh532viB0CqJCmIP3/+vLT1YQSt2WyK8J/WCVofeL/griJQFhYWFocB9hTrdrtS+q8jAfOAiwV1LdQI0TOJ/eeWlpakGkr7+VAHVCqVpIKOVW2tVguDwQCVSkX0NFp/NYtA8Ty63S6azSZ6vZ4snOl0GqVSCSsrK9JXTaebdGqG6SiSQFbjRSIR6edXr9el6o/z0+Xya2tr6Ha7yOfzIoJmFCabzfoMNunUzpYk9JTSUTVGc5jyC6aQgkTguKA9lzQh4fmxl12hUBBik8lkZFNNQg3c3Jy7rotarYZer4d6vS5NivX9qlu9ULPECJ92HgdwS1uZWREo4KYeCoBv/iTh1Eix6Emnwe+3tJ4lUBb3Ha5cueL7WZuI6qq5oMP4+fPnZfxd3/VdMtZpNQD47Gc/K+Pf+q3fkrGu3As2E9Zpu8uXL8tYV2YC/mo2/UUVrKjTFZnzanz0eejnPP74477H6VSmjkLqawL4r/O3v/1tGevU46yorTaPPQpQIEsHaO7Kbzedx0WL2ihWUzF1RR0SCVDQYJPRKbpPD4dDn3BXt22ZJ+3IdJA22IxEImKRwBTdXpV+QX8ox3GQTCbFboBzY4SI58ZUHq8De72xByCvBecZPBYAcffWaUgSAF0Rdrvv2WGBpBHwZwcIvreMeLICL5PJyOcoHo8L4aE1RK/XQ6PREE+snZ0dDIdDIVPsYRjUXbEYQFdgUqyvH8O575XG49zz+Tx6vZ5YU0SjUeTzeWQyGXn9eX3L7jXcEwRqni/+WV/6gP+L/06+9DWCC6T+cOkvK33D6fSXLnPXN7l2/w7e/FpgeSfl4PoaaHIBzCYYJBenycbAwmIWIpEIlpeX0Ww2xQyS6Sg6iWsfpv121TRL5M6di086ncbGxobogqjzoQs3278wyuS6LnZ2dtBqtSSqRRNLio738/NhVIILMqMZ/X4f9Xod9XpdCJrjOL7okwZJJgBJC5HklUolFAoFIUaMROl0Ds07u90uSqUS4vE4ut0uFhcXhSjyOJ7nCWFkapOkgiLrcDiMZDLp00XNSuEdF5gupZZNf//xWrFYgUTGcRwsLy9Lf0K+rySc9IZiL0Km7bLZrJhrsnqR0Sv6ZU0mE2SzWfErY1RT2x9o7dq068eUKp+XSqVE49dut9FsNtFoNOQe1REvfm7uF9wTBMrCwsLiIIjFYjhz5gzS6bSk1rgQkgQw3TKP9xAXEOqA+JrJZBJnz56VMn/u2lmBRq8jpkYYeQgSKNoDMLKwn1Gkrsprt9swxkiTYRIotgKhgWMwIkHzT23+yDTa4uIiFhYWhNiReDLCNRwOMRgMpNqsUCggEonAdV0sLi6K5xOr65iG4uJOPZTuEaj1YzrawveIcz5O6OjLNOiIGfv8ua4r3l+M5OnUGiM5w+EQ4XBY9GbhcFj8xvj+8rx1FJVeXTrSFGzFsh8YHSVJox6L7wuJICv1GIG832AJlIWFxX2HUCiEdDot1WXU8DBdBUDSE/NCO4IzUszoTKfTQbfbFZ8ovUvnAkudT7BfHrDrFcTfU780z9z0QgjcXPC1L9Re0SySFG3iqP/pNJ7WAgE3o+CMXgSvBcmmFjNrs0b+nkRBC8pPS6Sb6TZWpE37u/4H3NS/pVIpjEYjcbJnBV7w+Z1OB9vb2+h0OigUCqIlo7M834ug/xWtCEigdIXdQU0xjTFIJpMolUpIJpO4ePEiRqMRms2mmKeGw2HZPNwvuOcI1Pb2tow/8IEPyJjhYuDWFJ7Gm9/8ZhmfOXNGxlrXMo8D9MLCgu9nrUnRN2ywQSehqyh0tZ2uzgt+6R3WjRus7tPQlYlap6L1Qacdt3N+wOxz1M7hgD+N+W/+zb+R8cc//nEZ68bYAPDv/t2/k7FON5fLZd/j/uk//acyfuyxx2T8iU98wve4P/mTP5l5rHkw63MEHM9n6Td/8zfnneptIZlM4pWvfCXq9Try+TyazSaazSZWV1clqsL+biQY8+6wmY4Zj8fY3t7GM888g3Q6jXa7jXg8Lp/hQqHg07gZY6Q/HAkGI2Pb29u+VOC85I5RJEaSdDqG+iRGeqZBV/bpKE8ikZD7VKfjpqUCR6MR6vU6IpEI2u02UqkUut2uGInSd4qEjMcI6nu0zYImAlpPdtxgCi8Wi80U9getI5hyy+fzEm2jLixIDD3PQ7PZxLVr1+Qa1+t1lMtllEolFItFSQcTWlsXFNZPI6rzwJhd487z58+j1+vJz9VqVTRaTNdSE3Y/4J4jUBYWFhb7wXEcPPbYY6jX6ygWi2g2m6hUKkgkEqjX66hWq0IuWFk2L+jXEwqFsL29LVVLg8FAdCyJREIa0RJM662srEhz4nK5jH6/j/X1dVy9elUE6dS27AdGbRglSqfTkg4jiaJuZpqoOEie+JpsehsKhaQyDsDUPmm6YW69XocxBtVqFUtLS1heXka5XBaRuj4GcNPwNJiiC5Kmk9JABaNLe/1dP4apsWC7lGnQ6WRqkBi1GgwGPm8twH+NphVHHJQ86deiC3oqlUIul8NwOBSd12Qy8aVW74dqPEugLCws7jtw4WfrEJIe/o5RBRZ/MOIzz8KgozaM9jAVQ9LCKBKjDpowUOxLXx/dYJZl/tS5zAPd10ybUu7nG6fPQ0dRgNl906Ytykwbct402HRdVwih1mzx9adFT4jTQJ4AyPuki4R0tEnbOuj3HoDP5XtWmxpW1HW7XfEFY5Tu+vXrPmsB2g2w8fB+1++goLEmLUBYwXrhwgW02210Oh0kEglxrO92u/KezurBeLfjniNQOvWlq+j+/M//XMa6cSvgd4XWqbdXvvKVMtZmlvNU4QV3EzotE6zQmwYdCtfVbi95yUtk/Hd/93e+5+h5zTPHWdjLHFRX6B11qflRIZiK0ed4O+cXbDqs76/Xvva1Mv7rv/5rGQfd0HV6TzfvDabILl68KGP9JRg0PNX321/8xV/IWFeT7oVZnyNg9mcp6K5+J5+lj33sY3PN83ahfZoYGeK8Wq2WtMZoNBpot9uSouj3+1J5NAskDIzytFotKUdfX1+XpsOlUgnZbNZnjgjcrNhluocpEVbqUaA972KkCZMWLufzeSlv57GDKbsgAaChoq7s0jqoWQSK8/U8D7VaTeZ+7do1qSqjvouVZ7FYTIjaNJH4SRInguk4tujhtaO+jClXkiDq4JhiowcXx9NAndhwOEStVhN7gitXriAWiyGXy0nLHhppHkU/QFaWxmIx0WI5joMHHngA4/EYrVYL0WgUtVoNruuiWq2KtkunwO8lEnXPESgLCwuL/UBfHi7SvV5PdvCu6yKfzwOAlP2HQiHZZbOsfhY0gdL98kigWIVVLBalVxpL81nGzznG43HxQNKtPw4icNcLqY4aMXrBCIgWfwcJAAkUSSQJlE4PzkpDkUCRiDGdN5lMcP36ddFTUThOGwMSyZPSN80DXRlIAqUJKMkUTS11T8J5oaOAJE+DwUCieIzq6VTaUZ0rySzfH1aaZjIZeJ6HVColEVfaMwA3DUIPYlR7N8ASKAsLi/sSXPCpsRkMBnAcRxYCVkmxBQfH81aAcTFl+oLpPArDu92ulIczHaL1Kbr0nASKppq0HZgXOo2j26fo9FFw3jp1R9I2iwDsRXB06pMkgNeSjW/D4bCQNW3KeVqJE0FdmY6+aWuDfr8vFg8sVOA50/KBEZq9dFTa0oGE8tq1a9IrLx6Po9frYWFhQXzFeP8AhxOt0+JzTfIvXryIeDyOZrOJWCwmjbG56ej1etIGiBYX07R1dyPuOQKl3xCdHvjSl74kY53eAPwVQjolMavB61FB3+S6OufcuXMy1imhoKO2DgFrc1F9HebZnejddbBJ7bPPPitj3SiXjzsOLxDqDoBbU0AHPT/Af46zzi/4OJ2GDYbedTpN3zfXrl2T8d/+7d/6nvP7v//7U5+v3/vgcfW9GqzWKxaLMtYCaH1OnU7H9xx97WZ9joDZnyX9OQrO76CfpeBn9LDBRYgtTlilFo1G0e/3ZRFqNpvY2NjAeDz2VZLt15iXP+syclb2sdEwU3eDwUDSWNSvBMkdo2WH0byV0RJGEEjQOG+dgmLKkj3w2B4mSAD4mZq1IGpCxL6b4XAYq6urACANcMfjsTStpWB5mp7ntIB2GEGSyGvI60ejVZb9M5U3zbQ1CP3ajGhOJhOsra0JOSkWi3J9V1ZWJJp5mFoxLdxnmjAajeLcuXPIZDJoNBpyr+7s7KDX64kmioRZpzmBw6scPynccwTKwsLCYh4w/cKFZjgcijdULpeTdF46nRaBrOd52N7eFpsCHY2ZRh50vzzXdVGpVNBqtYS0UBi+vLwsRIvEhpVamujNOs7tnLv+P0j4dDsWEoBWq4VGoyG/0y1q9rN5IAFgFIVRudXVVbE0SKVSCIVC0vA4k8nI5mSWvuq0QFce6lQXo1GMPtIDi1EoisqDAvq9iGjwvdGvR2f4YLPow7x2wQICnV5mledoNBKdVCgUQrfblfdSp4jvdlgCZWFhcV+CO3amJZjOImFhOo8+R4lEArFYTDyLjDGideLr7XUsCoFDoZB4MHFxIRnREYlZVWdHfT00OBcu2PzHhZ+Lf7DP335l/ZoEUL/D16XzOImZ1laddhLFiBkAsRdot9vodrvY2NjA2toaOp0O1tbWxCqDUUnaZsy6n0jGOK5UKnBdF4PBAKVSSSKCxWJRNH10gOe/w4Im97lcTnRs3HQ0m00sLy/DdV2srq7i2WefFWF5pVKRFkMHsQc5jbhvCJROaX3+85/3/U2nFPRN9vDDDx/5vObB8vKyjN/4xjfK+KUvfanvcR/96Edl/OEPf1jGX/va12Tsuu6Bjh18/Je//GUZX7p0ScZM1wTTQkcBx3Hwile8AoD/3ICDn1/wObPOD/CnpPQ9o6vKAH+aTV8P3cdQV7ntddxgxag+rk5zBeeg+0C+8MILMtYVdV/96ld9zwmma2dh1mcpmJo7jZ8lgtGQoBGj7i3GRWk8HqNSqUjauFqtIhaLodPpoNFoiCB6vzJtpnHoEcU0XiaTwcrKCtrtNvr9vvSgo43BcZAGfQxtwDgej2Vxr1QqWF9fR6/Xw8bGBra3tzEYDLC5uYlGoyH6lmAEJgjdgqRWqwlpWlhYQDgcRqfT8Qnrc7mc9HoL6rVOE3jNdNSH7Xk6nQ5qtRo2NzeFQFFMz6getUF72UvoCCHb/QA3G5XHYjFUq1V5PL8jDvua8T02xkgVYjKZlEiU67rI5XLodrtIp9PodrtoNBoAIBsG9la8m3VQ9w2BsrCwsCAo6tbl91xkSKDYnoQEij3hNjc3EQ6HRQ/EaMp+iwEXFr2Y0ZDy7NmzojVLJpMSqZrH8uSwECQAPC9We1UqFaytraHb7WJtbQ3b29sYDodoNBq+prJ7ReSCFWrslTccDrGxsYFIJIJer4fFxUXEYjGkUimJ+tFr6jTB83ZbuUzzwWI0KhaLYTgcIpFIwHEcaYwcrNI7aGWebpXDdirtdlv6JsZiMdEdTTPU3O/1dfpxrw2Cvp+1FQcbHjMSFg6HhUiFQiHp6cfj3Y2wBMrCwuK+AwXSTJXpaJlOxVCrxB51juNI+5F+vy8EbJ7FT5MHpsW0Nobl6IxCMS22H2nQ+qVZeqzgzzzHWT3RdFRO+0jpBY/icU0C5lkI+ZggCaDDOtObTHHupzM7SQyHQ2xtbcFxHGSzWZ9wm8Uu+Xwe8Xgci4uLGAwGqNVquH79us/agPYUmqjMIqAkQkxzttttbGxsiC6NUbtutys98wCIQet+6WCmmhnlqlarvgo64CbJjkajyOfz4qnGzwlJLzcpAERP6HmepO+azeYt53034b4hUDplovudAcCHPvQhGetUiDYtDPasInTa4ytf+YqMgz2+7kQwp80zdSokWKn0gz/4gzKmjw0A/OVf/qWMtZmjNlWclYsOzrvVasn4i1/8ooxZOXY7fdcsLI4bvV4PTz31FJLJJIrFonzpsy8biZPn7fYqW1xclB11p9NBvV7H2tqapH+1qHyvxU8bbDJlt7W1heeeew6ZTEaaDfOzzXYpmtBo6OiF67potVo+3yFg+ncPF3fHccQQ0XGcW+wOHMcRQX2pVEK32xVjUQA+b6N5F0LtN8X/O50OKpUKgN3vVAr38/k8EomEr1fePCTguDCZTGQNoKeWvobU0hmz26Ynm81iOBzKvRWsepyXQOhrPBgMpNItEolgY2NDhPm0yiAJnee68T4dj8fodruo1+ui0aMHGN8LppoZsWXfQhIs3oeMkLVaLWxuborfmU717qefO424bwiUxb2DUqmEX/iFXwDgJ4fAwQki4F9gZhFEwG8voEv2NdEGdkuyiTe84Q0yfv7552Uc1G5pIh48roa2WdDO30HHcj3X7/7u7556nPX1dd9zWF4O7H29Zm1G9EYEOPhmRM/vqCt0+v0+nn/+eWQyGYxGI7ER0OXfWuNRKpWkSqzX64meY3V1VbRtrC4DZqev+PfBYCAd7Le3t4W8UZTb7XalrQxJw7Q0jPZVajQa2NrakmgO3b+nLcxsx0F7BACIx+O+ii32PstkMohEIrIgx2IxxOPxW6JpwXYve4GP4X3W6/XEZdt1XaRSKXQ6HSwuLuLMmTPI5/MYj8fihaXfn5PEaDRCtVrFZDJBMpnEZDIRh3bgpnt3OBxGLpeTlC9NTI0xcF3XR773iiROA01Ogd2m9bVaTVzLW62WRIp47fYTlOs5DAYD0e2x0s/zPCm4SCQSvmbQAMR6gyQqmUxK/8disSjpvKADvT5/HaU8zdiXQBljzgP4DQDLACYAPuB53q8aY4oAfgfAJQAvAni353k2/GBhYXHqwcgBq+C4AJAITOtPR5dsfunT+ZkaF+6854nCMOoA7JIp6p+YuorFYuj3+z6PJe12rVNpXOyGw6GIkXWj4GnzYbQgHo+LHkybeWr7gGg0ivF4LNGGwWAgRJN6Hh0hu50ogp5/PB73kShW/LHqke/PaUC/38e3v/1tLC4uiimq4zhIp9MIhULiL8aChWw2i1wuhxdffBH1el2q6NimR0cp9/PWIkiWKMBng99kMolLly6JMzh9zhzH2ZdAMWXXarWwsbEB13XRaDRQrVYxHo/lXkylUvL4RCKBhYUFpFIpiU5Ri8XIG6sS6fBfq9XEjoH3Kx+nNxynFfNEoEYA/qXneV8xxmQAPGmM+RSAnwfwac/z3m+MeR+A9wH4paOb6uFBRxkA4FOf+pSMH3zwQRlr00pdGRWPx2Wsq6x0Cu/rX/+67xjb29u3Pd+3vOUtMp7VIw/wRyEuX74s40ceeUTGOjqiDRK1wWKwQmwWnn76aRnzQ86duYXFaUav18MzzzwjhqP5fF7SRQCkAowEIpfLYTweS8sTmkteuXJFDDcZCWB5ftD0Ui+EXChGo5FEDKLRqPQZa7VaSKVSWFlZ8QmQg74+ur1Hq9XC9va29N/jnBiN0ohEIlheXsbS0pK0iyFRZL88ABK1YDuXRCKBer2O69evS0WZTuEx1XPQSAp7qdHWgNe00+ng4sWLyGQyEukAbkbHDrM0/3YwHo/RbDbhOA56vZ4Qca2tYzEC9T9sWp1MJjEej4WMUu92UC2Q53ny/hpjpKqv2WzCdV3E43Ff0+b9ortBUs70W7PZRL1el4IJAHIcRqZ0g2xaHTBSNR6PkcvlkM1mMZlMhGxqPVdQUH/aU3r73n2e560DWL8xbhljngJwFsCPAXjTjYd9EMBncZcQKIu7G8ViEU888QQAPzkEjo4gAv5F4B3veIeMC4XCLfMj3vzmN8tYp9802QaAjY0NGdOdGQA++clP+h7HcuXgfHTjXmA3zUlouwtN/nVTYAAiEAX8hF+n9oLH1ZsRvREBDr4ZAW5uSI4jhffCCy+g3W5L1Zvneb7yeUZWdONh/r7f76PdbmNxcVEiN2xJQvKkK/OC+g5NLkh+mNZYWlpCt9vFwsKCuDsDN5sMAxDtiCZQrutiZ2cHnU4H1WoVOzs7via2+prGYjEhe8lkUiwTtDO5MQaO44iQmz+nUiksLi4in89LWxq+1u3oeYBdIuK6LlzXlcW4Xq9jPB5jc3MTCwsL6Pf7SKfTIlDW1+M4YYx5L4D3Arup8itXrkgUM5PJoFwuyz2kG/uSnKbTaZw9e1ZcxMPhsDStpkkrBfUHdZ5n2s0Yg1qthqtXr6LZbGIymSAWi4nuSOvdppyfELlEIoF8Po9IJCJVc5PJRNJ5zWZTtHtMhzMKxabV+nWZDo/H47h48aIUDGxubopYnUT6du6j48aB6Lsx5hKAVwP4KwBLN8gVPM9bN8YszniO3GwWFhYWJwX9XeQ4jiz2TB1pI0cAt3S158Ki03mZTEaiU0zbcEcN4JaWL9OgIw5Mv9Fdut1uSySDGqlg5Zyu+tLO6kHHar0I69YijP60Wi0hJ1xoeT7adZp6rWw2i3A4jFarJVVVQVPNg2h5NLkM9ssjUafppud54st13PA87wMAPgAA2WzW+8pXvoLFxUXU63Wk02k88sgjPo0TySg3C8YYPProo1haWkKtVkM+nxeDyXA4jHa7Le2C9ioEmAYdBV1dXcVXv/pVpNNpuY8ymQzi8TgKhcJMAsVIpDEG2WwWy8vLYmWxtraGyWSCra0trK+vIxaLodVq4cUXXxSN3MrKCsrlshhsEtT3Ma0Yi8WwuLiIdruNp59+GtevXxcy1Wq1bnFoP42Ym0AZY9IAPgzgn3ue1zyAn4TcbMaY00slLU419OJ3/vz5E56Nxd0I/V2Uz+c9plYajYYsVrFYDPV6HblcTjQeuvJLp46Wl5fxile8AmfPnkWlUkEul0O73UatVhO/JFbb6ejMHvOTRarRaAgZymQyuHjxopCooJCaaa1sNoulpSXRk1QqFXieh2azifX1dV9hAP2WarUaHMdBs9nEzs4OkskkHnroIRFCUy/D6Bt9qR588EGpSHzxxRelL9v6+jp2dnYkItbtdn3EaB7QYgLYNS197rnn0Ol0UCwWRbuWzWalZP4kwfuHBpYkptSJUcujCTjb8vB65PN5Mdx0HEdIr/aKmjeVpXVDLHagXQCLFhht3csXShNytjBi9BXYJeCdTkdsGYhWq4VsNot0Ou07d4LmsSxiIJHKZrNCOJly1FrE0xqFmotAGWOi2CVPv+V5HruebhpjVm5En1YAbM1+hbsHOq2hdzj/4l/8CxnrBq/a6E67P3/jG9/wve7nPve5256Tdo9+8sknZfzud7/b97jHHntMxrpKTDtE6/nq8/iVX/kVGQeb6M6CDqEftdhPL36PP/64x/MIul8f1fkB/nPU76dOGwL+qjeNH/iBH5Bx0ILiYx/7mIxZzg3c2qhYz0nfY7qyDQDe+c53ylinFBcXbwaKf/EXf3HmHD7+8Y/LWN9/wK3NhWfhoJ8l4Ob7d9QiYS4Q9NGhxicajaLZbGIwGEiKCrh53cPhsIhxS6USHn74YXQ6Hayvr4u55sbGhuiQQqGQlH4D2Dcl0el0sL29jVarJQSKLTLOnDkjkSA22mWUiNYHCwsLSCaTqFQqYobZbrexubnp00Ex5Viv1xGPx2W+mUxG0lC0D+AiyHssFArh/PnzSCaTcF1XSvVZTcaWNIwgHSQFxWvERb7ZbOLKlStot9vSH4+i5aAG9CRADRSrzVzXxcLCAtbW1pDNZkUPxgIDaugYvWPEiRovYLcStVqtIpVKSfSw3W4LsdSp9iBIoKjTY7uYra0t8YoqFovIZrNCkJm21fYQ/PzF43FkMhnRAbI1TC6Xk+8wmqmGQiFsbW1Jepnpbd4fvFdJyvm9lMlk0Ol0EI/H0W634TgO6vW6fBbYeLnb7Z46cfk8VXgGwH8F8JTnef9R/ekjAH4OwPtv/P+HRzJDCwsLi0NGKBRCKpUS/yeSBYq0tVA7uEsnMWGlked5SCaTSKVSmEwmSKfTPoJMp2oufMH0loZOu2lBNXVMjAxRqMtduud5orshEWS6jRE0Pl5rr5iuZMqQxEqnMbVomASOiyLFwOl0WlJE2WxW5q/F5foc94soMEJCQsZ2MvqfFkbrVOtxYjQaScQN2LXuyGQyWFpaEgJF8kmSxFQW75lQKATXdVEul5HJZOC6LjY3N5FOpyWSyP5xzWZzTwKltXftdlsiR6z+4/vDSObCwoJ4jTFtx+upfcAcx8HCwoIQ60qlIufNSNdgMMD169eFQC8sLKDb7SKbzYq2kFFd3repVErE96VSCa7rIp/Po1arodFoIJFISEqzUqn40nqnISo1TwTqewH8AwBfM8Z89cbv/jV2idPvGmN+AcBVAD91JDO0sLCwOGQ4joOXvexl4tPD3Thdo5ki0uk7ALcsLsViUdqucNdfKBTgOI5EAJjOc10X9XpdNFdBYTerqVqtFqLRKCqViqQ88vk8lpaWkMlksLCwgMlkIiSJCx8fF4/HUSqVUC6X4TgOarUaKpUK+v2+CLVpXsnKQloS0DQ0n89LZRlF8tRHARDXbaZqkskkOp0OHMcRw02m8waDgZTsU9QerArUYISJFWvValVExaurq/A8T4wiSRDS6bSUzQdbqhwldMn/YDCQdiWu60qalOeqndoZWdZNqweDgUSmOp2OaOp4fwJ+K4u95sTj8dgknZwfizVoGaCfB8B3vzNqRlF8v98XI00S3aCrPo/BuevKPJ4HRfUkVbx+2WxWSBLJFv3QSJx0OvokidQ8VXhfADDrbvyBGb+/a6GNAbVJ42te8xoZf//3f7+Mz549K2PtEs5mt4Ru3PrNb35TxvM039VfNtoIMdj8VZs2fu/3fq+MH330URlrV3N9E+r5feELX5DxlStXfMfQN6sOo3LHepoFfxYWRCwWw+XLl0UYTb+aVColfj78vU4nBiuU6NfDRZvNU9lseGtrC+FwGK7rolaryaJmjBGdhwZ7zzHSRA1KuVwWPx4A4i9E80+m9bjQ5XI5FItFxGIx5PN55HI58QhiOohRHBIopvs2NjZQKpV87tK8FlzweFym6BzHkUo0HouRPTZPprieZGMWgmaK7DnoeZ5cz/F4jOXlZZ9OSztgHzeBYo+3TqeDjY0NXLlyBel0WoggrSKAm+ljXk+m1Kgd6vf7QoQ7nY68rzqVNaswQWummD4cDoeo1+vY2NhAKpVCPp+XiBijlLrNC+dI3RuwKxHIZrNyT5XLZdTrdSFmvAaVSkXITzabRb1eR7lclvuT/6ivYhQ4FAphYWEBruuKVUatVpOUOvV8mpxRt0hielD7h8OAdSK3uOvguq5owTQ5BA5OEAE/SZxFEAF/Ob/2uwqW+c+C1qVpEg74W+8EifEsaL2Xti0AbtVvEVqLFCT5uuR4ZWVFxp/97Gd9j/ubv/kbGQcJtsZBNyPAzQ3JUS+A3Onyi5w7Yi7GrMALLsjayFLrRvRuejAYIJ1OSwSCFgiDwUBEz+xEHwQXQC4ONFlkVIPCbZ1iI0jumMpLJBJi+MnUUbvd9unqgseKRqMSpeKCRX1KULStRdEkk+l0GoPBAJFIBNlsVshgo9GQ60OyuV8UhY/R89MVipwn4I+kHLc31Gg0kvcjHA4LUaETfzgcFsLJlCo9vUiCeX+Uy2WMRiPkcjnRBBmz2/pHezHxXKdVOZJIMJ0XCoVQq9XEBJZpw1wuJ270TPvqxtq8r2kOm8vlsLCwIBHOer2OVqsl7vfdblc0V8PhEMlkErVaTcTx6XQamUxGPnO8HkxpGmPQ6XSQSqXQaDREx1ev1yWiy2vA685U8UErPg8LlkBZWFjcd0gkEnjpS196i3iWO3Hd+iKordGaI02oqD8qFAooFAoYDAbY3NxEMplEu93G2toaAAiJIUnRX/7cTYdCIVk8Y7GYiJLT6bSYbnLh1S1oSGgWFhaE/PR6PamKAyBpJWqI2EePUanV1VWf4/poNBItFAAhlozeFQoFibZks1nxckqn0ygWi+JxxWbJtIoImm1qaDE0Iy8UKbNHWzablVSedr0+7hYvPJZ2lmdmIWgVkUwmZa68j0jSGQWkg7m2a6ARpa6Em6c6TxMppshIRKLR6C0Gm0GXd34+eI9rW4ugVpDRLkZi6fRPiwy+NjcnWnelfyZRp7aO7uXc8NDrig2PtSYq6Ld21LAEKgBtDPjMM8/I+I/+6I9krPuMLS8vy1hXOAUrsXRllR7rirBZ/cd01ZPe8Qd3/9euXZt6HuVyWca66klHa37kR35ExvrLJ3gj6rnryAu/nG0Kz+JuQDwe9xl6BrHfAhysVmL6D4BUK9Gk0vM8qcir1+uIRqPo9XpCePSXv9Z38LWj0Si2t7el1DuRSAhBY1UaCR0XoUwmg1KpJBVc/L/RaGBzc1PSabpii4vs1taWREZYcUizTUbodNqMCyKjFJpAxONxMYmka/XOzo7vvPUCTGgdj25lw75zo9FIrvFgMMDy8rI4fZNMHsciSo2S9q6qVqtyT3Q6Hezs7CCRSGBjYwNLS0tIpVK4ePEiFhYWROCtiTsr1GhtwOvZaDTkH20EtOP9ftWdlUpF0nWDwQDFYlGaZDMqRULHCBkRfI+0wafWSZE0keA4joONjQ1UKhUkk0ksLy/j/PnzSCQSWFpaQqlUkogvyS/7M/Ieo7cU7+f19XWfZxTThiSDnN9xvP+WQFncdWg2m/jEJz4BwE8OgYMTRMD/xT2LIAI3SSIA1Ot133w0dMWRTqXp9FnQy+q4vK30l2LQfuH1r3+9jLXDu94YAP7rpR3Ug7qWg25GAP+G5Khx2FGKYKUaACEinudJWod95dhDT7eu0NeWCxTNPhklYoQnFApJdClYMcgUCSMYrApkNAPYvU+5aPJ4NGJkBRdTRnQBZ1RORyS48PH41G8xikCROT2OdOuSg2hXGHmg4anrupKeZJSKmrTjKnOnbxHnNZlM0Gw2xceJhQTxeBz1eh1bW1vI5XJCdrWNAN8zkgi+Lkmn4zhYX19HJpOR911Xds4Cxfg6Tcfr98ADD6BUKmE4HIp2j/eNPkdCE6egKJ6RQer42u02IpEItre3Ua1WkUgkcOnSJYxGI6RSKYTDYdEaMkKpq2PZ7mY4HKJUKolRZ6FQQDQaFbNR+lHphszHBUugLCwsLA4RJBWTyUTa/JCsNJtNiSDs7OyIToqiWG22yfJ/lsqzFx1F7plMRkrRGR1iiw6WnTPNEYvF0G630Wq1sLOzI5sB3X+MJeLsp8cS8o2NDVm8l5aW4DgOLly4gOXlZcRiMZ+HkV4IV1ZWkEql0Gw2hZA1Gg3UajURtLuuKxoWvSBPAw0hKaRmRIotdbRJ4yybiMMG023TNFue50m1JRf6VqsFY3b71bEFClOxJNVay0bHexJR2hEwpaqtHvjzrJSoJuPUk7FJMFOl1KkF3wdt2krheSKRkOo4kiwegxFORtHohM/jjUYjMawlYeMxGd1lSt0YIynlUCiEdDot1Yr5fF4qW/kcVu3tdT0OC5ZA7QEdWWDEA/CLgXWfsYsXL8o4KG7WLF4LmnV6bnNz847mq6v7NLTBpo6CaOHx2972Nhnr1IbuYQYAv/3bvy1j3SuO1+q0GJxZWJwUqGcBICaYrFLa2NiQtJZ2ayaJCEagSHAY1WA1VLlcRq/XQ6lUkqo6EjfqoJgm499c18W1a9dkB88FlHPjIkQTw2g0im63i1qthng8jlarhVqtJiSFlYCMOHHRZ2qP2qhUKoXNzU3R3eRyOTGJZKonWHk3DSQhfF4kEhEiWK1Wkc/nRYcVjKIcFWhwWq1W4bquz6eI3/nUrE0mE3nfPc/D5uamuHEXCgVpfcI0Hu+jUqmEixcvot1uS1qs0+ng+vXrYvFQr9clKsVoU/DakWyRzI5GIzz33HMYDofS2qXT6SCfz0tkiCDBY7qxXC7DdV0kk0msra1JBIopVZK0UCgkY5I+isrr9ToqlQocx8Hy8jKKxaIYwgZ79pG48TMQj8fR7XaRy+VQKpXQ6/UkVTgajdBoNHzVgUe1LlkCZXHXoV6v4yMf+QgAPzkEDk4QAT9JnEUQgfkINTCbVAcb555mZLNZGb/97W/3/Y1iaAB46qmnZBzU5OlU5kGv3bwNn28XTGvMg2CqT6fqtAA9+BiKwYOeP4PBQCJIJA7coQdFsDq9RoNEulNTiE6RMiMwPD6PS40JNVmshGq1WqJfYvpVRyp4LAq+mZahpotGh7q6TLeWYSRIp/Oo22JPNh0lYLSN57tXiT6jLpwfxdoAxELhOCJQJIq0aiBJ0ZYF9NoCIHNltWOpVEI+nxftEa+7FupTz0a3d2qNeK1Ifnm8aZ8dzosRIZJ16uE6nY40QY5EIlP1uLy/mGKkkzhF8TxXEvFgP0gdqSLBZbUe31umiEnKtcVCOBz2zYvXnA2t+TkkcfI8T+4RS6AsLCwsDgmDwcBHBPdCsAKPFUPUN5E4kLAETQhZOZTP53H27FnkcjkhcM1mE2tra0KKSCJ0NIoLDXf4Ozs7uH79OlKplCwwFCbTbkBXEVLcHo/HcfHiRVnEqc+jrxAjWcDuokddEyMoo9FIKskYTUkmk9IcNpFIYHl5WRZZrXVaWlqC53nI5/Po9/tSrbe2toadnZ1bogbTWpYwasLFkA1nI5EInnvuObTbbSwsLMg57eXYfVggwWEjZurDeB11SpbWFZPJRDSUjPiRXPf7fR8hYXEAW6EwYkWvJKZBe72epNlIoGZF9XQqr9VqyX3SbDaRTqeRTCYlkqar8FgwQD1fJpORiBgJK6OPWtvGY7HKk5YWOzs7EmVixEtr9BiN4+eJny/HcSTKyGgbyT0F99wQ9Ho9uR7ziO0PCkug9oBmrbphou7xpfuM/cN/+A9lHBTDPvDAAzJ+4oknZKwZ9R//8R/f0Xy1Kefzzz8vYx1V0R4p73jHO2RMrQbgj6AEe7Zp76EPfehDMv7Upz51u9O2sDh2jMdjqZaaB9zdauPNZDLp+4Kf1v6FUQTP83y96vr9vlSnDQYDrK6u+sgBEaxGYwpme3sbruuKMJ3tY1ZWViQKxAWHCxJTL9pDiXPgtdBVgDwHOpGT9CUSCYTDYZ+wPB6PI5VKoVgsyrXidw3J42QyEcdyarIYpaMAm8efRX50GxrqqKLRKNbX10XXw7YhxyEniMViEtG+fv266G+0NxGJE/suRiIRtNttxONxLC0tIZlMotVqYTQaYWVlxecrBuwShqWlJfH0Wl5eRrvdRiKRQLFYRLPZRDQalQo96pmYOtPEgWScEc1r166hUqmI+zzF2GfPnpVIkLaIyOfz8rok56VSSVJ7rusK2edx+Jr0umKj7Eqlgkwmg3Q6LUazNBItFouy9jBlTH0WjWLH4zHK5TLOnz+PTqeDTCaDQqEg14b6OM/zJFU9b9XivLAEysLC4r4DfXmA/Y33dIpO632Amyljpif2Sulpt/BUKoVcLieVSIlEQnb9TKFMq04jweAOW/sMMYJFksdFS4uSuXunGDeVSsHzPIlC8BjTIihcNCeTiaT/KOx2XVfSRzRvDIqBE4kEJpMJMpmMOKDncjmfOSb1M/Om85jKY1rMcRy0221pV3PUiEQiyOfzIujXqSldsQbA936wP6IxRmwOWGXGiCGjl2yhMplMxJSTpHc4HCIWi6FWq8n10EabWlyt08E6pUfrgWq1inQ6LVEu3mM8J0aXaJJKosuoEe9dRqz0vyDxJWlut9vyWWAqjk7pJFw6hcd7m2k/EndGtvr9vi86B0DmxrTiYXpFWQJlcdeh3+9LhE1H14CDR9gAf5RtVoQN8EfZZkUkgfmjkhpar6FTS+vr6zOfMy+0MZ4+v8uXL/sep12mtd2BvnaA3z18Z2dHxv/tv/033+O0xcE80Vzg5rXTjzkK9Pt9PPfcc3NX6WhPJkZgCoWCRFX4Ra4XGV3aD0Aq47jQUATd7/dx7do1n/6EVUS6LJv/s0s973VqqrLZLM6cOSPaKu0szbTe8vIyUqmUGGx2u12xKtje3pbogi6PZwUhSRq9edbX1yXyQDdpto3RrWiAXU1dIpGQFNXKyoqQsHw+D9d1fYshySgJEkXQmtjpyrOrV69ia2sLzWYTuVxu33Yxh4VwOIxisYhGo4GVlRVZvBnhIZEiNIkhQWg2m6IRW11dFXE0RdUkDTwe28KwJyIb8lJbBtwk1roibb95tFotIVHr6+sYDofI5XIS0dTmmVrXtri4iLNnz0pKlfYamuhrkFRpp31WpDJ6xKbCxhhxMC+Xy2LzwPtKpxXZl5JRrGQyKRE5VoLq++YwNHKWQN0G/vZv/1bG+gbR/ee4iyB0q44f/dEflbFud6Gr83R6QR9jXtasRbs6NfjQQw/J+Du/8zunzk9783zHd3yH73W1X5GuGmR7D+2PZGFxWjEcDrG+vi6L8l5fpkHDTOqeGE3hzp+/0zoQHYliBZ2u0CIRYYqLOiMimG5gxR7TatRXJZNJXL58WT73LDEnkeKCwwqrXq+Hzc1NbG1tifEmdTba40dfGx3NYLPcTCaDpaUlSe20Wi1J0QE3iSctFuiB1ev1pHccBe30uYrFYpIK4kLHOTBywAVYC5dJ+re2thCLxWYaEx8maMgaiUSkGu7KlSvS2gS4WQGnv7t19Gd1dVV0TIxonTt3Dg899BCSyaSksJi+YnqPVhHtdhulUkn8oliZefXqVdEEkdAE58Hr2+l0RIvHKE6hUMD58+dFY0edFm0ymH596KGHEI1GUavVEA6Hsbm5KZWcQQKliRvvY93nMJlMolKpIJ/Po1AoYGdnRzYGNKvVTb4ZOWUrocXFRXQ6HWk1U6/XUSqV0Gg0sLa2Jr0g9fW4E1gCZWFhcd+BPjRBYXIQJACaQHW7XSEkjJik02lZ4OigPC2tx591mo0NXjkXHR0K9jwjSG50D7t2uy3RD0YH6CvEKJGu8KIInr3XmLoBbi7w01JnnA81Wb1eT9q1cNGiw7bWQ/Ea8twTiQQymQzy+TzC4bBEVBKJhJAPalb2ahirq/PoEUUydtSg8WM2mxUrgGq1img0iuFw6Iv+Tpsv32+m5iioT6fTkuZjiyDdlzEUCvnShr1eTzRTvP61Wk0aPs+aB3CzwpPFBfTqouifFgSMgmmzVFobLCwswBiDTCYjZFBHsacdV5P0VqvlI2/UUdGagp5Z9MriPHQvS1Z2soE1Nw71el2iW9oi4jDSeJZAWdx1oC8OcKvw/qARNsAfZZsVYQP8TXR1pE1HJDk/4g1veIOMdaowKM6flcL70pe+5HucTpnNu8PWX2SsUgKAN73pTb7H6XPXNgbBL99XvepVMtZeMV/84hd9j9M2AToiqs81eO24Yz3qFF6v18O3vvUtSUvtdS11Kk6n8IrFItbW1pBOp1EqlXDp0iUkk0kUi0VJ5/DaB4lYPB6XL/xz587hla98JZrNJlZXV8Xnp1KpYHNz0+eyDPirq6gjGY1GuH79Or7+9a8jnU6j2WyK6LhcLouvDiMZ0WgUxWIR58+fh+u6kjZzXRdXrlzB9evXZVHl/ay1I1z8er0etre3ZcFm+oVVgcvLy4hEItKvT0dRotEoLl26hFKpBNd1USwWUa1W0Wq1UC6XUalU0Gw28e1vfxsAbolGTYvo0GtrVvrosMGm1L1eT0xGW62WRIEYieT7p78bNGEGdj9LGxsb8jxWpxUKBRSLRbmOTLXr+5GpVABy/VutForFoq8acr95UHO1ubmJXq+HdDqNnZ0dSY3pqjwSKJKscDiMxcVFee3t7W0AkPdCC9m1NkprxoDd71a+15lMBp1OB47joFKpiPu6JuU6OkdiRH0ho5uO44hvGjc3+nrcbrTSEqjbgP5grq6uyviDH/zg1McAfh8irUN585vfLGNdRae1PbrH3V7+OFr/oz2HtLbla1/7mox///d/X8bvete7ZKz9k4JiWH2Mxx9//Jbn69e0sDitYAqPAuR5St75pc0FiZ3mU6mUaDfokMwFD7jZfJhj4KaWKhKJYGFhARcuXBAhtuu6Up1XrVaFrASFwIy4kORsb2/j2rVrIkpn82EaN+poWCwWk6pAx3GwsrIitgrNZhPb29s+Lx8iKESmhod937g5yWazosnRhInH5uJPN+lutyuNiUm2k8kkqtUqtre3xcE7+P2nF2P+nZub40jh8b0OhUJCQvr9Pra2ttBqtWShpnhak1Fg9z5sNpsi2ibpZUqT/eOWl5cRj8dRLpdRKBR8ZIqRTgq6AYip59bWllS9MdXZ7XYlwqfnQRH2aDSStF0kEsHi4qKkCRl5InkiaUomk8hms9LrMRaLYWdnB9FoFJ1ORwi99sjSGymOdXEE18N0Oo1QKISlpSVJC3IejuPIfUVrEUaoWOHH1/M8T1z1KcpnxNISKAsLC4s5QTJEHU1wRzwLwdQLhampVAq1Wk20UGyqS80Ud8pc7KgfYYqGm6psNitVSFx4er2epPR06oznQc+mwWDgM1qkS3e325VUGEXA2teHaUQuNuxBpgXtvC5BITKjFxSa6zQiBckU+XKeOiIC3KxsZCXieDyWfm9sdcLmtjqSEXyv+Du6cR9XCo/eW3wPOV9WyNEbalYaTRuk8j1my5/BYCC9DHUqSx9f9yNkyxM9D6bFGKGirULw2jFSRE8yGmyS3JJc6egPCxTG47H0JSSxY3qRqUzq66ZBVypqD6fgPOLxONLptESh9Ovx+vJ+YmSLei1eD1pp0B3+TtJ5lkBZ3HXglxbgj64BB4+wAf4o26wIW/A19Gs3Gg3f43RD4g9/+MMy1h9QXckWPK4+p+CO+w/+4A9krKvc9oI+P52a+/KXv+x73I//+I/L+K1vfauMgwURukGyTvv9o3/0j3yP+73f+z0Z/+mf/qmMdVPmYKSWEd2jNkGkAWI4HPa1tqC4dBq4y2VFEkP/TFvR6Zs7dmpjFhYWZEFJp9OScmAqgToPEi6Sp4WFBYnOsO0FIwjU+HCRoK8VF9FEIiELLxedeDwuYm7P220yXCwWkUqlZJFj9Var1RJRM0maLm3XOpZ2uw0AIiznuQ8GA2nVsbS0JOmkQqEgzWTpYk4NVCqVknPLZDLIZrOoVCoidOYcg+8V58OIGAXoRw1eb1ozsCrt3LlzUgzAKCGJndZxaZ8kvp+RSESIDFvoMC3H6kL2z9Nu84wyFQoFiVydO3cOmUxGyDAbLjMVqhtZ8z6ipQHbuqyursq50POLBpi0FCBhKZfLcm46tasNLffqeUhxOS0fdnZ20O12kc1mRWzPTUoikZD5ai2U53lyT3meJ95rrVYLZ8+elfnSLkO3PNKbk2l6uyAsgboN6IuqtR26JFsvLABw4cIFGetWIlqz88M//MMy1hoZrS3ROpxgibv+wtCLnO7L98gjj8hY62F0Tly/jl7YAb/mRaciGbqfJRy0sDhNMMaIWJX3LBezvcgbe3vp3S8jDFxM+JqO46BUKsmY7VYoZGUqy3EcFAoFn9s4yctkMhGBsF4ASd60JsR1XYkq7ezsSJ+0crksRo3cfDCFRqE5SRzNGQuFAjqdjuz8SUiChFcbRZIwcYFnJRw9e/j62uqBKZfxeCwkj6JofvcUi0VJDdE8kxG3IMbjsYjvjysCxSo5zolRuFarJak713WlmbDWcPH6Af6IS71el2rCWq0mPfSYBkun00KGeX/xunIe1NFRU6Ujc7zXtPO9burMakhq+nK5HIwxEp3UBI5rVTgclmq5SCQiEchoNCppVR57VqSX10PPiyniUqkkFhVM3wGQ43HzodPEOr05GAywvb0tEV6+N0xF6/t7nmg0YAmUhYXFfQgaWLKsnqmhoOYvCL0rZbphMtntMs8Fk/oU3T1+MBiI8R8XUH7JMxJjjBEtSTwel5QOIy2sztNETwtwmUrzvJt964Bd/Ue73cZ4PBZSE3QLZ8RqMpmI7w7nzgV4WuoHuFnFBcBH/Or1ulSX0SKB14Xkiaklprh0Oo+PzWQyIgpmWovpvGl6GpLQwzBKnAe6GozXMpVKSWqXkRJGHqelz/R1JBnVuirqgfhe8jF8POehPaMY8QQgjvXcOJCQkyxpuwxePxp+au8vGqDqTTZTYCQxTJPxvtekWV8Dfe4a+vPFzQwJIb3TGKVkelubbeoelbo3I33GWOVIEkhNFCNRmnzvl9qzBMrirgN3GIA/ugYcPMIG+KNssyJsgL96T/9N+/YA/rQbFzHAn7oKpuZ0xFAbbgbPb2VlRcY6AhmsGJwFXcUXnIOumtPFEa9//et9j9MGnDol+D3f8z2+x+nrevbsWRn/r//1v2T8wgsv+J7DiO5Ru0hHo1GcPXtWGrTyy5b+Q7O+NLnAcHEJLjSspNra2kIikcDKyoqIq8vlMoDdhS2fzwup0CSC4u/hcIhyuYzl5WX0ej0Rh3c6Hayvr4tZIf12tBM5O9pzIdOtVmgTwCgYSRMjDp1OB9VqFb1eT+5XRsS4iOkIit69MzpH8XSz2UQymUQqlUK1WsXS0pKU5zMlpVMvJE7UpjA6VqlUEA6HfR5XvFdptsmICiMpJLZHDd4PACQCUi6X8fDDD4ueieL8er0uRQG6Ek57fAV1ZcPhUFKYdNSu1+vS6oQu4CQQAOS9LZfLeMlLXoJutyvpUKbl6AC/ubmJRqMhKVodjRqNRqhUKnj22WclikgnezY4ZuqQEcVisSjaJ6ZTI5EINjY2ZH5M0e2VygP86c1KpYJnnnkGjuOgXq+j3W4jmUyiXq+LEeni4iIKhYJEYXU0iinihx9+WK4BP0+FQgHZbBbdbhfb29vyHvH6WwJlYWFhocDqL6aYqNHQlgV7kSjtwwRA0iPhcFh8cBht4pcz3cu5ELFyjDt3pgHZ7oURGC44FIb3ej3UajUhfMBNXyZqaJrNJmq1Gvr9PqrVKnZ2djAYDFAoFCQNyHQin08SUywWUSqVkEgksLOzIz469Xrd16aD10LrRrRgmKJfRpzG4zGy2ay07RiNRuIerVMwJEVM7RWLRREys8SdWi2+Z7pE/rBcpucFCTV1meVyWcxKXddFvV5HMpnE9evXRVQ9y45BFylwXK1W4bouotEoer0eqtUqFhcXceHCBZTLZYxGI2nGq+fBCsvhcCgVka7rikaOmwVGM3lMRjVJ3rrdrrSTKRaL6HQ6OHPmjERVdTSTbW24OeD9+tRTT0mKbFrLoGkggeI1YPRLVygyKhbU1AUtO3hfs1Ahl8uJhxvTzTqqRUK+XyrYEqg7hN7FP/fcczL+i7/4C9/jzp07J2PtSbS4uCjj1772tTLWzYcvXrwoY62N0jt5wK/H0u03XvGKV8hYeyO98pWvlLGOFujdf1ADpX/WN5bueG1hcdqhRdz6n24IDMzv/K8XA+2u3Gq1UKlU0Ov1RMfBiiWWi2ubA6ZhKJSlYDebzaJcLiOZTMJ1XVlU2ZxWp2GAXSLDBYGRj8FggHK5LJ9VkjaC6TM2BabHD8X2nAuwd2f7IMFkdWCj0cBkMkGlUkE0GsVgMMDi4qJUCHKhY4Ugzz+Xy8niyYIN+vpQ70MjRmpsDsMkcRaMMe8F8F5gV+vKdBu1ZUyjMWrESjimMqmZ4/WbldKblsrSfQP5/nueJwRdp4O1gaquzkun09IPkaRKV2kGjUt5bKaU4/G4pBV5LF3ZCUBsDnivM9qjnzPPWjEtXc5oL7Ab4aeurNVqiW2G9l0jkWK0kySTKTydsibR1Cl9bS8UxL4EyhiTAPB5APEbj/89z/P+rTGmCOB3AFwC8CKAd3ued7TudxYWFhaHAFbh9Xo93yKn27BMixDMgtavMKVG3RBTDGx1QUFuuVz26X70Tp4bFUZu6JFE13PP89BoNDAcDn2GhUzBtNttrK+vIxaLSQVbJpORKkG9Y+ccSFouXLiAbDYr1W40rmW/PH2c4EKo01BM7Y1GI6yvr0skxnVdrK2toVQqIZPJ+NpzMCLGNJQxBg888AAWFxfRarWQy+VQrVbRaDSQzWaxs7ODVquF1dVVuR7AzYqyo4DneR8A8AEAePnLX+5tbGyIp5auKozFYiiXyzh//jxyuZw0+e12u1hdXZVomtZy6esY1HXRq4kEhxt2Rjjz+byIvikJYAPnYrEoqTlNnFKpFM6cOYNOpyMmnqz6ZIRJpxKvXbsm155FE2fOnEGxWBTCRkJfKBTgOA7Onj2LRx55BIuLi7h+/TrC4bBE0vZLlwe9orSmidoy13WlifTm5qZUfTISls/nJSrH60Lnf1bh6Y4Ci4uL6PV6WF9fR6vVEiPXaZgnAtUH8BbP89rGmCiALxhj/hjAuwB82vO89xtj3gfgfQB+aY7Xs7C4I9DcDfBH14CDR9iCf5sVYQP80UatlQoKj3V1EA3rAL9RqtYbBY+ro5La9RsAXve618l4a2tr6hiYvejrub344ou+v2n7hW9961sy1ropAHj7298uY231oKtLAb9dhHZ719q0T3ziE77n0FrhKKIHOnLARYapCX7x6/5y6nn7zidIuLh7pe0A9UZnz57FaDRCqVQSjx8dydGl6SQVTO3RGqDVamFtbU30Vqwo4jG5MDCKxXsrm82iVqtJtIIkg7tz7tapz2q321hbW8Pm5qav75g+v2AERV8n6qImk4n0vXNdV9J7w+FQNFw69cZrQEK5sLCAbDYrlYSpVEocqkm6eF4AJO1zHKB9BABp5aIjmrlcTowmmQ6jTQS1d7OqPnktmSamhQPTSqurqwiFQigUClJ0QBKlU1fGGNFvMjrnOI7cl/l8Hq1WC6FQSKoHGUFlqb8xBs1mE5ubm2KxQZNW/mPEkFFEVlWWSiWcP38emUwG4/FY+iV2u11p9jsL+hpwg8JMC8kQfa5GoxGazaZUKxaLRXH7J/FilJDaTZ1+ZQFENpsVS45KpeLrVxvEvgTK2z0DKmGjN/55AH4MwJtu/P6DAD4LS6AEwRYc+kPy2GOPyViLcFmWCfhTcH/v7/09GWuRdHDx0UJifVPqY+gU4NLS0tRjB9N2szBNfH1cX1wWFgeFjhxcunTJo7hak6cbjws+b97XFzKhtSxMB3Dx5ELFFhn0ayJ5I3kAbrqYB20P+JnO5/Oi7WCFFokcIxXUZzEFtrOzI9E2kqJYLCbtXrjYMMKQzWbheZ60FCGJ43nuJQbWjyFZYAqm3W6jVquhUqmIDgXYjQ5qYT0jgky7kPgxqkJdTCQSkYosNis+auhI27RrwGvL65tMJkUHpKvF5j2WTo0yncfFX5f/B9OruuKScwF2q/NYuam1gNPS2UyP0teKBHaWLYG+lxzHkYo8Vr1OMxad9xro+7rb7cLzPIlEAZDqVerodMo5WJ3H60GbBq6RFOjv9f7MtVIaY8IAngTwEIBf8zzvr4wxS57nrd84qXVjzOKM58quz8LCwuI0gBVDFKDSo4cESAul5wWfoyMy/KIPhULY3t7GlStXUKvVJEKQy+WwsLCA5eVl3yJLIkUyxZQQo1cXLlxAu91Gv98XsfLa2hrW19dFAMxIDKtEO50Orly5glwuh3Q6LVVi8XhcBMc0SGS6hO0zWq2WkCYea3NzU6rFgtFafS34M4XKTOEwDUXrhE6nI+L1UqkkLTxIQtg2hM2Xo9GotJ5hdI2py1ar5YuiHhVGoxEajYZcMw1qj3K5HKLRqKSGEokErl696muKe5DjkTgwYtzpdFAsFuX4i4uLoq3j+0hrDZIJRqyor6vX6xKRCoVCQu75fEY1aVK6tbUljt7nz5+/xRtN2zpkMhksLS1Jf77NzU2Ew2FfxPsgYFSXG47RaCREqdVqIZvNyvsxHo8ltcr58fNE+wIAosmjdQc7APBzOgtzESjP88YAHjPG5AH8f8aYl897snrXZ4w5HmMOi3sauVxO0kg6ugYcXYQN8KftdBowmBLUO1/d7Pjhhx+Wse6BuBeCH15tcVAsFmWsbRAAf6puXiKgU4zPPvusjP/zf/7PM+ekU3PBBsna6kGf+z/+x/946jyBm6lDbf9wFCBRYMm1TncEq8wOCv187SfT6XSkZLxSqWB7e1ua+GYyGVms+KUe9LMBdu/JTCaDfD6PSGS3jx6bBbuui52dHZ9RIgCJKHieJwaNnU5H2sYwosWUGYkbiQ2PVSqVRMfUaDTkPtjLeFQTSf7MiAEtChjlomM2PYT4mWWEEIAYM7JMnlYNw+EQyWRSKvN0RPEo4Xme2EdME0UzdQtA3jcaipIAHIRAMfo0HA6lgIAWD/R9oqZKRwa1kJoEPR6PiykliZS249AEHoB4UlGwzapM2h8wUgj4U9G05uC9m0wmMRqNRON2ULA6T7eH4T1CiwjepzxHHo/zYwSKFbE8P54H069MOc/CgarwPM+rG2M+C+DtADaNMSs3ok8rALb2fvb9haA30NNPPy1j3eJCL77ab0cv3jqdp9t8BG8+fcxZAkrtkK4XuHlJhfZQ0gupdSK3uJugBa96kQDma+FwUDDtoNMfjOiwbx4NCrW+aBp0Dzv6LAGQKA0X5uCx6fUT7JHHqr/g8Zj2oekiiQ2PddAUlJ4PF0FeBwCii2FUYVpLDS5udMnma+mNVCaTEf2VhcXtYN57ep4qvDKA4Q3y5AB4K4B/D+AjAH4OwPtv/P+Htz1bC4t9oFPB2tDSwuJ2wAiU4ziiUdH+NEdBomgsyDQO3aFZrUW9Dzc20zYjFLyyXLtUKuHMmTNot9vY3t4WYsWCB5Inptrq9TrW19eRTqfF74l/m3aNaCMQjUZRKpVEW7S6uipRz4MQFYrFaT7KAoVcLieRrsFgICJlisRJcvk+8b2iZoX+W+zhRqJ11Hj++ecrTzzxhAvg9vJRBwD1VrSF0MUdf/iHR7r8lgBUtre3peLz61//+lEeb08wUgT4o+a6KOY2rkcJs9/DizN+P1cEagXAB2/ooEIAftfzvI8ZY74I4HeNMb8A4CqAnzrghC0s5oZOBT/yyCPeT/zET0x93FFF2AA/cdsrhadD+azQAfw9DbWbNwC8853vlPFeqTntDzbLaR24vdSTnreuHtRjAPjMZz4jY11pF0xLavdx/V7odOob3/hG33PogP7xj3/8QHM/KHQEipGUoEnkYYPEhq1fms2mlGGzcawWAO8VgWIkWkeFdE823WGeJIrpFnoHsTUMI1/TIlDUZbGqihVObH1x0AiUFpUzJcQUEvvFsaqQc9bzYRrGGCNVhmzrEo1GpU8cI1lHDc/zysaYL3ue9/j+j747ca+fH3D75zhPFd7fAXj1lN/vAPiBgx7wfoVmyk8++aSMX/Oa18g42DJjGvSCGiwb11qEWV++evGaJ90WfB29UOvn2yo8CwsLC4v7CdaJ3MLC4r7DU089VXn88cevYO/Q/aGClWyAv2vBUYNpHwClWq1WoVD/qKN808Bqrn6/D9d1fZVYhzyfEoDUYb6ghUUQlkBZWFjcd/A8rwzcH+kJ4j4810vHdLgPHNNxTgr3+vkBt3mOx02gKgCOddc3BSdy7Bs7zxKAyqc//Wn5vR4/8cQTRzmF4zrvmYK7w4LjOHjZy14282/EvBWBOk05K0UJ+DVR+jnz9v+7cuWKjHUaF/Drh7QGKqjd0ronfa5H1bZiGrRYU/djDL4nWh+lNVAaus8jcLMfpNZZWVicZtzQZ96zuNfPD7j9czxWAnUadn322BYWFhYWFhZ3CmuUYWFhcT/jnt9dK9hztbA4RJijKtnd86D3aSTmfj32YcMYsw3gWLxX9sFJpqLv9TlcZMTawuI0whjzdgC/CiAM4L94nvf+E57SHcMYcx7AbwBYBjAB8AHP837VGFME8DsALgF4EcC7Pc+rndQ87xQ3bJm+DGDV87x33u75nZSI/CR3B/bYdzlOi/eKncPpmYOFxXHixgL8awDeBuA6gL82xnzE87xvnuzM7hgjAP/S87yvGGMyAJ40xnwKwM8D+LTnee83xrwPwPsA/NIJzvNO8YsAngJAC/v34TbO70RSeCcpSrPHtrCwMMa83RjztDHmuRtfmPcMjDHnjTGfMcY8ZYz5hjHmF2/8vmiM+ZQx5tkb/xf2e627BcaYsDHmb4wxH7vx81Gf6+sAPOd53vOe5w0A/E8AP3bIxzh2eJ637nneV26MW9glGWexe24fvPGwDwL48ROZ4CHAGHMOwA8D+C/q17d1flYDZWFhcV9BRQ/eAeBlAN5jjJle1nl3glGElwJ4PYD//cb5cZf9MIBP3/j5XgEjCsRRn+tZANfUz9dv/O6egTHmEnZNtP8KwJLneevALskCsHiCU7tT/AqAf4XdFCVxW+dnCZTF3YrTEFGzc9jFaZjDQXBPRg+I+yGKoHGYEYWDHHbK745fUHxEMMakAXwYwD/3PK950vM5LBhj3glgy/O8J/d98Bw4VgJ1nGFzY8yvG2O2jDFfV787lhD2SYbQjTEJY8yXjDF/e+PY/9dxHfs4cRpSknYOp2cOB8Q9Hz0g7uEogsav4JAiCgfAdQDn1c/nAKwd8jFOBMaYKHbJ0295nvf7N369aYxZufH3FQBbJzW/O8T3AvhRY8yL2N04vcUY85u4zfM7NgJ1AmHz/w7g7YHfHVcI+yRD6H0Ab/E871UAHgPwdmPM64/p2BYWdwPu6egBca9GETQOO6JwAPw1gIeNMZeNMTEATwD4yDHP4dBhdpuZ/lcAT3me9x/Vnz4C4OdujH8OwB8e99wOA57n/Z+e55274VL/BIA/8zzvZ3Gb53ecEahjDZt7nvd5ANXAr48lhH2SIXRvF+0bP0Zv/POO49jHhZMQAJ9kRPPGsU5cGHwPRTfv2egBcY9HETQONaIwLzzPGwH4JwA+id3v99/1PO8bh3mME8L3AvgH2L2OX73x74cAvB/A24wxz2K38vCut2wI4LbO79h8oIwxPwng7Z7n/W83fv4HAL7L87x/coTHvATgY57nvfzGz3XP8/Lq7zXP8470y/7GHD4P4OUArh7H8W9E+54E8BCAX/M875dO4tyPAjfO7Rmo8mEA7znq8mFjzBsAtAH8hrqffhlAVZW+FjzPO5LS3huLwIouL8YuCf75Y5yDAZDyPK99Y4H+AnbFu+86rjkcBowxEezeQz8AYBW799BP3yMLIN+nD2L3Pfnn6vf/AcCOep+Knuf9qxOa5qHDGPMmAP/HDV+fe/pcLU4HjjMCdV+EzTVOKoTued7Y87zHsLuzfp0x5uXHdexjwIkIgE8yonnj+CcuDL5Xopv3cPSAuF+jCBr307lanBCO00jzNITNN40xK57nrR91CHuvEPpxHB8APM+rG2M+i10t2LEe+wgxTQD8XSc0F59Q1RhzLKLcvYTBRz2HKdHNvzLGnMh1uBN4nvdHAP7opOdxFPA87wuYvmEFdqNu9yQ8z/ssgM/eGO/gHj5Xi9OB44xAnQbR3bEI4U5SiGeMKRtj8jfGDoC3AvjWcRz7mHDfRTI1TloYfI9HNy0sLCzmxrFFoDzPGxljGDYPA/j1owybG2N+G8CbAJSMMdcB/FvshnF/1xjzCwCuAvipIzo8Q+hfM8Z89cbv/vUxHX8FwAdvRApC2E1PfMwY88VjOPZx4DREMoljjeqdhqgmcY9GNy0sLCzmxok0E7awuF2cpAB4SlHCsQlVT4Mw2BhTBjC8QZ4cAH8C4N8DeONxzcHCwsLitMASKIu7DjcEsb+Cm5HM/+cYjikRTQCb2I1o/gGA3wVwATeiep7nBYXmh3X87wPw5wC+hpuGgf8auzqo45rDK7FL4nR08/82xiwc1xwsLCwsTgssgbKwsLCwsLCwOCBsLzwLCwsLCwsLiwPCEigLCwsLCwsLiwPCEigLCwsLCwsLiwPCEigLCwsLCwsLiwPCEigLCwsLCwsLiwPCEigLCwsLCwsLiwPCEigLCwsLCwsLiwPCEigLCwsLCwsLiwPi/webjQjxRHj2wgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x216 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "image = create_captcha(\"BARK\", shear=0.8, scale=1.5)\n",
    "subimages = segment_image(image)\n",
    "f, axes = plt.subplots(1, len(subimages), figsize=(10, 3), sharey=True) \n",
    "for i in range(len(subimages)): \n",
    "    axes[i].imshow(subimages[i], cmap=\"gray\")\n",
    "plt.savefig(r\"B06162_08_16.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.utils import check_random_state\n",
    "random_state = check_random_state(14) \n",
    "letters = list(\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\")\n",
    "# letters = list(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\")\n",
    "assert len(letters) == 26\n",
    "shear_values = np.arange(0, 0.8, 0.2)\n",
    "scale_values = np.arange(0.9, 1.1, 0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_sample(random_state=None): \n",
    "    random_state = check_random_state(random_state) \n",
    "    letter = random_state.choice(letters) \n",
    "    shear = random_state.choice(shear_values)\n",
    "    scale = random_state.choice(scale_values)\n",
    "    return create_captcha(letter, shear=shear, size=(30, 30), scale=scale), letters.index(letter)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The target for this image is: L\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "image, target = generate_sample(random_state) \n",
    "plt.imshow(image, cmap=\"Greys\") \n",
    "print(\"The target for this image is: {0}\".format(letters[target]))\n",
    "plt.savefig(r\"Graphics/B06162_08_17.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset, targets = zip(*(generate_sample(random_state) for i in range(1000))) # the dataset is close to \n",
    "dataset = np.array([tf.resize(segment_image(sample)[0], (20, 20)) for sample in dataset])\n",
    "dataset = np.array(dataset, dtype='float') \n",
    "targets = np.array(targets)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000, 20, 20)"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset.shape # 1000 words, with 20*20 pixels size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import OneHotEncoder \n",
    "onehot = OneHotEncoder() \n",
    "y = onehot.fit_transform(targets.reshape(targets.shape[0],1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = y.todense()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = dataset.reshape((dataset.shape[0], dataset.shape[1] * dataset.shape[2]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split \n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.9)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Classification"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.neural_network import MLPClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf = MLPClassifier(hidden_layer_sizes=(100,), random_state=14)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'activation': 'relu',\n",
       " 'alpha': 0.0001,\n",
       " 'batch_size': 'auto',\n",
       " 'beta_1': 0.9,\n",
       " 'beta_2': 0.999,\n",
       " 'early_stopping': False,\n",
       " 'epsilon': 1e-08,\n",
       " 'hidden_layer_sizes': (100,),\n",
       " 'learning_rate': 'constant',\n",
       " 'learning_rate_init': 0.001,\n",
       " 'max_fun': 15000,\n",
       " 'max_iter': 200,\n",
       " 'momentum': 0.9,\n",
       " 'n_iter_no_change': 10,\n",
       " 'nesterovs_momentum': True,\n",
       " 'power_t': 0.5,\n",
       " 'random_state': 14,\n",
       " 'shuffle': True,\n",
       " 'solver': 'adam',\n",
       " 'tol': 0.0001,\n",
       " 'validation_fraction': 0.1,\n",
       " 'verbose': False,\n",
       " 'warm_start': False}"
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.get_params()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "S:\\Anaconda\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (200) reached and the optimization hasn't converged yet.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "MLPClassifier(random_state=14)"
      ]
     },
     "execution_count": 178,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 179,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(clf.coefs_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(400, 100)"
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.coefs_[0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 26)"
      ]
     },
     "execution_count": 181,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.coefs_[1].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUcAAADuCAYAAACqLcX5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABL3UlEQVR4nO2daZReVZn9d6WSqkoqlaESRpUwBJB5RiKReZZ5lBkEQQM2aPfSbvtD25Pda9mr1W6ZJ4EwCCggkyDzTBgMkjBGMExCgklIUkOqktT/Q9bvnH0ql0D5b8hFn/0lcO5b933vueee+wz72U9DX1+fAoFAIFBi0Mr+AYFAIFBHxOYYCAQCFYjNMRAIBCoQm2MgEAhUIDbHQCAQqEBsjoFAIFCB2BwDgUCgArE5BgKBQAVicwwEAoEKDB7Ih4cOHdo3cuRILVmyJI0tXrxYkjRkyJA01tjYyOclSYsWLUrHRo8eLUnq7u5OYwsXLizOMWrUqOW+u7e3N/33u+++W5y3paUlHaPip7Oz03+3Ojs71dPT0/DRrvSTx4gRI/pWXXVV9fT0pDGu2edjzpw5kvK8869/rqurK401NCy7ZO4F98b/dtiwYWns/fffL8YWLFjgv1GS9Kc//SmNNTc36/3331dnZ2dt57atra1vlVVWKX734MHLlr6vHdZka2urpHLdsjZ9vvuv83nz5qVjjDU3N6cx7gv3xOHPVH+888477/X19a3ygR9YyWhqaupraWnRmDFj0hjrpq2tLY0NGrTMFmOefe6Zk1mzZqUx5py1yD2T8hpcddVV0xhrl7n0z3MuX88tLS1asGCBurq6KtfugDbHsWPH6qyzztKrr76axtZbbz1J0mabbbbc2MiRIyVJw4cPT8fYCF944YXiR0rSLbfcstznN9hgA0nStttum8YeeeQRSdKkSZMkSVtssUU69sYbbxTnlKT29nY988wzA7nUTxzDhw/XMccco6VLl6axz3/+85Kkp556Ko299957kspFATbaaCNJ5YLkfA8//PByx770pS9JyvPp5+ce/OEPf1ju/NxDSZoyZYqmTZv20S5yJaG9vV3f+c53NHv27DT2+uuvSyofxsMPP1ySNHfuXEnSWmutlY49+OCDkqTPfOYzaYx54CU2fvz4dOy6666TlJ8BSdpkk00kKT0/vplsv/32kqTzzjsvje25556SpO9973szP/LFrgS0t7fr+OOPL14cvFh8Dtvb2yVJt912mySpo6MjHWM9s/4kad9995WUDQL2FSnP4TvvvJPGdtppJ0l5c/R9it/xxBNPpLG1115b55xzzgdeV7jVgUAgUIHYHAOBQKACA3Kr+/r6tGTJEm266aZp7Pnnn5ck7bbbbmns/vvvl5RNZf/83Xffvdx5v/CFL0iSjjjiCEnSpZdemo5hDuMWStJqq60mSfrmN78pSfrv//7vdIzYxZFHHlmcY8aMGR/tIlcSmpqaNG7cuMJ1IDbj13L++edLknbeeWdJ0gMPPJCO3XfffZLK+BUxr6233lpSdg8laccdd5RUujfcg6uuukqStOWWW6ZjuOjuPj700ENFKKCOmD9/vu66664idouL7eEa4r1NTU2SpHvvvTcdI0zjMcSXXnpJUnbR11xzzXSMeSRUJOVnBfePGJwk3XDDDZKkk08+OY15zLPOGDp0qDbbbLPienjefAw3d5dddpEkjRs3Lh0jNPO5z30ujT300EOScviBOZJyXNjDS5dffrmkfB88tkus0feBPffcswi/9UdYjoFAIFCBAVmOHR0deuKJJ1KgWJLefPNNSdJdd92VxvbZZx9J+U3s1goJExItUn4DE1zdfPPN0zF2eg9eT58+XZL029/+VlKZmV5//fUlZetVWvY28ixVHbF06VJ1dnYW10L2rSpjfOONN0qSNt5443SMwPWECRPS2PXXXy8pB7fdwv/d734nqUymYX2eeOKJy3031pZn1NdYY40i8F1HYJV7NhmrgjmTcgKMdejZTu7F448/nsYOOuggSdLTTz8tqbRsONexxx6bxi666CJJeY6xLqWckHn00UfTmFu1dUZvb6/efvttbbjhhmmMTL4nTLhGvB23KvmcJ07xgPbee29J2WOUcgYb61LKewTPyHbbbZeOMa8nnHBCGnv22WeL560/wnIMBAKBCsTmGAgEAhUYkFvd3t6uo48+WvPnz09j8OZwO6Ts0pJEcR7i1VdfLUn6/ve/n8YIxuLynXvuuenYuuuuK0l68cUX09gaa6whKbvQ7vpxLpI8UkncrTMaGhoSF0ySbrrpJknS8ccfn8ZwTZ588klJy7haYOzYsZKkW2+9NY199rOflZSTO+76vPbaa5LyHEs5cQPf7Ne//nU6BonZ7+cOO+ygZ5999qNf5EpAQ0OD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\n",
      "text/plain": [
       "<Figure size 432x288 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(4, 4)\n",
    "# use global min / max to ensure all weights are shown on the same scale\n",
    "vmin, vmax = clf.coefs_[0].min(), clf.coefs_[0].max()\n",
    "for coef, ax in zip(clf.coefs_[0].T, axes.ravel()):\n",
    "    ax.matshow(coef.reshape(20, 20), cmap=plt.cm.gray, vmin=.5 * vmin,\n",
    "               vmax=.5 * vmax)\n",
    "    ax.set_xticks(())\n",
    "    ax.set_yticks(())\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 183,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = clf.predict(X_test)\n",
    "\n",
    "from sklearn.metrics import f1_score\n",
    "\n",
    "\n",
    "f1_score(y_pred=y_pred, y_true=y_test, average='macro', zero_division=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import classification_report"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      1.00      1.00         7\n",
      "           1       1.00      1.00      1.00         3\n",
      "           2       1.00      1.00      1.00         3\n",
      "           3       1.00      1.00      1.00         5\n",
      "           4       1.00      1.00      1.00         3\n",
      "           5       1.00      1.00      1.00         2\n",
      "           6       1.00      1.00      1.00         5\n",
      "           7       1.00      1.00      1.00         3\n",
      "           8       1.00      1.00      1.00         4\n",
      "           9       1.00      1.00      1.00         3\n",
      "          10       1.00      1.00      1.00         6\n",
      "          11       1.00      1.00      1.00         4\n",
      "          12       1.00      1.00      1.00         2\n",
      "          13       1.00      1.00      1.00         4\n",
      "          14       1.00      1.00      1.00         2\n",
      "          15       1.00      1.00      1.00         8\n",
      "          16       1.00      1.00      1.00         2\n",
      "          17       1.00      1.00      1.00         3\n",
      "          18       1.00      1.00      1.00         1\n",
      "          19       1.00      1.00      1.00         5\n",
      "          20       1.00      1.00      1.00         2\n",
      "          21       1.00      1.00      1.00         4\n",
      "          22       1.00      1.00      1.00         1\n",
      "          23       1.00      1.00      1.00         3\n",
      "          24       1.00      1.00      1.00        10\n",
      "          25       1.00      1.00      1.00         5\n",
      "\n",
      "   micro avg       1.00      1.00      1.00       100\n",
      "   macro avg       1.00      1.00      1.00       100\n",
      "weighted avg       1.00      1.00      1.00       100\n",
      " samples avg       1.00      1.00      1.00       100\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(y_pred=y_pred, y_true=y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict_captcha(captcha_image, neural_network):\n",
    "    subimages = segment_image(captcha_image)\n",
    "    dataset = np.array([tf.resize(subimage, (20, 20)) for subimage in subimages])\n",
    "    X_test = dataset.reshape((dataset.shape[0], dataset.shape[1] * dataset.shape[2]))\n",
    "\n",
    "    y_pred = neural_network.predict_proba(X_test)\n",
    "    predictions = np.argmax(y_pred, axis=1)\n",
    "    assert len(y_pred) == len(X_test)\n",
    "    predicted_word = str.join(\"\", [letters[prediction] for prediction in predictions])\n",
    "    return predicted_word"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method MLPClassifier.predict_proba of MLPClassifier(random_state=14)>"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.predict_proba"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GNEE\n"
     ]
    }
   ],
   "source": [
    "word = \"GENE\"\n",
    "captcha = create_captcha(word, shear=0.2) \n",
    "print(predict_captcha(captcha, clf))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x271aca7fa00>"
      ]
     },
     "execution_count": 196,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(captcha, cmap=\"Greys\") "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x216 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "subimages = segment_image(captcha)\n",
    "f, axes = plt.subplots(1, len(subimages), figsize=(10, 3)) \n",
    "for i in range(len(subimages)): \n",
    "    axes[i].imshow(tf.resize(subimages[i], (20,20)), cmap=\"gray\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x271aca45a00>"
      ]
     },
     "execution_count": 198,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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+Sv/Ibxc8/uhG3pWnHsv8l/bYmJONZgYsXQjXAbgDQBTRaRJRG5BT8N9hYhsB3BFKCYioiSKpRfK4j42LUhwLkREFAfeiUlE5FNpOxaKO9WWttr+1WtP2VqqO8zoA+2TwstrfmWnORudt87EiazHud2rg9udYUpl4H8z9bjty/3z9ktMfFf52vByUYZ9vzKd0nPRRjuOSrC172FtByvYT907kvu5B6N87u5nft+hc0z8kz/bfxIfnP+IiS/N9/pM5zxrX6fz3yaZOOcNO5Wbe8zEk2fNcFunPjpjiokD729DX/TUKRMv319n4vkFvzPxKGfoZDntHX+FW+14QrrXjgeTSJwybWjwDJyIyKfYgBMR+RQbcCIin0rbGviJRXYshdEzbI22JMOtq9o64+GA108897AtTAdP2jriUHJruonc19M7a018a+mb4eUi50/zqdFObbnY1kaDDelZoyxosT/I6uNevfii3AazLfIzB4DcVnt4//c+WxO/crI37d7Sc54x2y675C4Tj99SYmK3Bh5PnhMKD5r49Rm23l74PmK2bpcdM6i52v7Mo+xtB8ga6V1H6R4xzGyT7el5DFDfeAZORORTbMCJiHwqbUsop50awPQS2+WpKiv6uCqVOV5XraOVdl/FwcTdRp5MkcOKAkDXZjss7qFZ3sdZ5Tz31tl/MvHDRXPsvg/MHnyCIeK8veXvebdsl//O3goeOGKHZXUVNdny11sdEUMTlDaYbZGfOQAEnaO7+TE7rMGim64KLz85yc7ufun1dkb71V12GrSa39idx5PnxDxbDlw50dY5bHEruvxt9vegca6dW6U215Z6vnlBfXj5gW/ON9tO70vcMeAq3WBv269YaaeC627dP2Sv/VHGM3AiIp9iA05E5FNswImIfCpta+CFLXZqqLaTdthMd7os17Rc77bgYxMG15Uvq6oyvNx83Tiz7VR5fPvKtHfDo/x97+fMff7t6E92auBlm+yQnR1Bezt3pK+Vvmviq+ZsMPHBQDyV1+hOqv1svj/52vCy/LHYPrifGviwRtu1bcvBiMmfbEnbfOYA0DXSfu4VD9rhA3aWTAwvH/+GPd6+P7rexF+8pszEJ9eOSViegzk+S7faY6K5y51f3NbAFw/fEV6eXWfr0AdmukPTJs690641ceAdZwo61sAHhGfgREQ+xQaciMin2IATEflU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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "image = create_captcha(word, shear=0.2, scale=1.1, size=(len(word) * 20, 30))\n",
    "plt.imshow(image)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [],
   "source": [
    "def test_prediction(word, net, shear=0.2, scale=1):\n",
    "    captcha = create_captcha(word, shear=shear, scale=scale, size=(len(word) * 20, 30))\n",
    "    prediction = predict_captcha(captcha, net)\n",
    "    return word == prediction, word, prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [],
   "source": [
    "from nltk.corpus import words"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [],
   "source": [
    "valid_words = [word.upper() for word in words.words() if len(word) == 4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['AANI',\n",
       " 'AARU',\n",
       " 'ABAC',\n",
       " 'ABAS',\n",
       " 'ABBA',\n",
       " 'ABBY',\n",
       " 'ABED',\n",
       " 'ABEL',\n",
       " 'ABET',\n",
       " 'ABEY',\n",
       " 'ABIE',\n",
       " 'ABIR',\n",
       " 'ABLE',\n",
       " 'ABLY',\n",
       " 'ABOX',\n",
       " 'ABSI',\n",
       " 'ABUT',\n",
       " 'ACCA',\n",
       " 'ACER',\n",
       " 'ACHE',\n",
       " 'ACHY',\n",
       " 'ACID',\n",
       " 'ACIS',\n",
       " 'ACLE',\n",
       " 'ACME',\n",
       " 'ACNE',\n",
       " 'ACOR',\n",
       " 'ACRE',\n",
       " 'ACTA',\n",
       " 'ACTS',\n",
       " 'ACTU',\n",
       " 'ACYL',\n",
       " 'ADAD',\n",
       " 'ADAD',\n",
       " 'ADAI',\n",
       " 'ADAM',\n",
       " 'ADAR',\n",
       " 'ADAT',\n",
       " 'ADAW',\n",
       " 'ADAY',\n",
       " 'ADDA',\n",
       " 'ADDA',\n",
       " 'ADDU',\n",
       " 'ADDY',\n",
       " 'ADET',\n",
       " 'ADIB',\n",
       " 'ADIN',\n",
       " 'ADIT',\n",
       " 'ADMI',\n",
       " 'ADRY',\n",
       " 'ADZE',\n",
       " 'AEON',\n",
       " 'AERO',\n",
       " 'AERY',\n",
       " 'AFAR',\n",
       " 'AFAR',\n",
       " 'AFFA',\n",
       " 'AFFY',\n",
       " 'AGAG',\n",
       " 'AGAL',\n",
       " 'AGAO',\n",
       " 'AGAR',\n",
       " 'AGAU',\n",
       " 'AGAZ',\n",
       " 'AGED',\n",
       " 'AGEE',\n",
       " 'AGEN',\n",
       " 'AGER',\n",
       " 'AGHA',\n",
       " 'AGIB',\n",
       " 'AGIO',\n",
       " 'AGLA',\n",
       " 'AGOG',\n",
       " 'AGON',\n",
       " 'AGRA',\n",
       " 'AGRE',\n",
       " 'AGUA',\n",
       " 'AGUE',\n",
       " 'AHEM',\n",
       " 'AHET',\n",
       " 'AHEY',\n",
       " 'AHIR',\n",
       " 'AHOM',\n",
       " 'AHOY',\n",
       " 'AHUM',\n",
       " 'AIAS',\n",
       " 'AIDE',\n",
       " 'AIEL',\n",
       " 'AILE',\n",
       " 'AINT',\n",
       " 'AINU',\n",
       " 'AION',\n",
       " 'AIRA',\n",
       " 'AIRE',\n",
       " 'AIRT',\n",
       " 'AIRY',\n",
       " 'AJAR',\n",
       " 'AJOG',\n",
       " 'AKAL',\n",
       " 'AKAN',\n",
       " 'AKEE',\n",
       " 'AKEY',\n",
       " 'AKHA',\n",
       " 'AKIA',\n",
       " 'AKIM',\n",
       " 'AKIN',\n",
       " 'AKKA',\n",
       " 'AKOV',\n",
       " 'AKRA',\n",
       " 'AKRA',\n",
       " 'ALAN',\n",
       " 'ALAN',\n",
       " 'ALAR',\n",
       " 'ALAS',\n",
       " 'ALBA',\n",
       " 'ALBE',\n",
       " 'ALBI',\n",
       " 'ALCA',\n",
       " 'ALCO',\n",
       " 'ALEA',\n",
       " 'ALEC',\n",
       " 'ALEE',\n",
       " 'ALEF',\n",
       " 'ALEM',\n",
       " 'ALEN',\n",
       " 'ALEX',\n",
       " 'ALFA',\n",
       " 'ALGA',\n",
       " 'ALGY',\n",
       " 'ALIF',\n",
       " 'ALIN',\n",
       " 'ALIT',\n",
       " 'ALIX',\n",
       " 'ALKY',\n",
       " 'ALLE',\n",
       " 'ALLY',\n",
       " 'ALLY',\n",
       " 'ALMA',\n",
       " 'ALMA',\n",
       " 'ALME',\n",
       " 'ALMS',\n",
       " 'ALOD',\n",
       " 'ALOE',\n",
       " 'ALOP',\n",
       " 'ALOW',\n",
       " 'ALSO',\n",
       " 'ALTO',\n",
       " 'ALUM',\n",
       " 'ALUR',\n",
       " 'ALYA',\n",
       " 'AMAH',\n",
       " 'AMAR',\n",
       " 'AMBA',\n",
       " 'AMBO',\n",
       " 'AMEN',\n",
       " 'AMEN',\n",
       " 'AMEX',\n",
       " 'AMIA',\n",
       " 'AMIC',\n",
       " 'AMID',\n",
       " 'AMIL',\n",
       " 'AMIN',\n",
       " 'AMIR',\n",
       " 'AMIR',\n",
       " 'AMLA',\n",
       " 'AMLI',\n",
       " 'AMMA',\n",
       " 'AMMA',\n",
       " 'AMMI',\n",
       " 'AMMO',\n",
       " 'AMMU',\n",
       " 'AMOK',\n",
       " 'AMOR',\n",
       " 'AMOS',\n",
       " 'AMOY',\n",
       " 'AMRA',\n",
       " 'AMYL',\n",
       " 'ANAL',\n",
       " 'ANAM',\n",
       " 'ANAM',\n",
       " 'ANAN',\n",
       " 'ANAS',\n",
       " 'ANAT',\n",
       " 'ANAX',\n",
       " 'ANAY',\n",
       " 'ANBA',\n",
       " 'ANDA',\n",
       " 'ANDE',\n",
       " 'ANDI',\n",
       " 'ANDY',\n",
       " 'ANES',\n",
       " 'ANEW',\n",
       " 'ANGO',\n",
       " 'ANIL',\n",
       " 'ANIS',\n",
       " 'ANKH',\n",
       " 'ANNA',\n",
       " 'ANNA',\n",
       " 'ANNE',\n",
       " 'ANOA',\n",
       " 'ANON',\n",
       " 'ANSA',\n",
       " 'ANSU',\n",
       " 'ANTA',\n",
       " 'ANTA',\n",
       " 'ANTE',\n",
       " 'ANTI',\n",
       " 'ANTI',\n",
       " 'ANTU',\n",
       " 'ANTU',\n",
       " 'ANUS',\n",
       " 'AOUL',\n",
       " 'APAR',\n",
       " 'APER',\n",
       " 'APEX',\n",
       " 'APII',\n",
       " 'APIO',\n",
       " 'APIS',\n",
       " 'APOD',\n",
       " 'APSE',\n",
       " 'APUS',\n",
       " 'AQUA',\n",
       " 'AQUO',\n",
       " 'ARAB',\n",
       " 'ARAD',\n",
       " 'ARAR',\n",
       " 'ARBA',\n",
       " 'ARCA',\n",
       " 'ARCH',\n",
       " 'ARDU',\n",
       " 'AREA',\n",
       " 'ARED',\n",
       " 'ARGO',\n",
       " 'ARGO',\n",
       " 'ARIA',\n",
       " 'ARID',\n",
       " 'ARIL',\n",
       " 'ARMS',\n",
       " 'ARMY',\n",
       " 'ARNA',\n",
       " 'ARNE',\n",
       " 'ARNI',\n",
       " 'AROW',\n",
       " 'ARRY',\n",
       " 'ARSE',\n",
       " 'ARTY',\n",
       " 'ARUI',\n",
       " 'ARUM',\n",
       " 'ARYA',\n",
       " 'ARYL',\n",
       " 'ASAK',\n",
       " 'ASCI',\n",
       " 'ASEM',\n",
       " 'ASHA',\n",
       " 'ASHY',\n",
       " 'ASKR',\n",
       " 'ASOK',\n",
       " 'ASOP',\n",
       " 'ASOR',\n",
       " 'ASSE',\n",
       " 'ASSI',\n",
       " 'ASTA',\n",
       " 'ATAP',\n",
       " 'ATEF',\n",
       " 'ATEN',\n",
       " 'ATES',\n",
       " 'ATIK',\n",
       " 'ATIP',\n",
       " 'ATIS',\n",
       " 'ATKA',\n",
       " 'ATLE',\n",
       " 'ATMA',\n",
       " 'ATMO',\n",
       " 'ATOM',\n",
       " 'ATOP',\n",
       " 'ATRY',\n",
       " 'ATTA',\n",
       " 'ATTA',\n",
       " 'ATWO',\n",
       " 'AUBE',\n",
       " 'AUCA',\n",
       " 'AUCA',\n",
       " 'AUGE',\n",
       " 'AUGH',\n",
       " 'AULA',\n",
       " 'AULD',\n",
       " 'AULU',\n",
       " 'AUNE',\n",
       " 'AUNT',\n",
       " 'AURA',\n",
       " 'AUSU',\n",
       " 'AUTE',\n",
       " 'AUTO',\n",
       " 'AVAL',\n",
       " 'AVAR',\n",
       " 'AVER',\n",
       " 'AVES',\n",
       " 'AVID',\n",
       " 'AVIS',\n",
       " 'AVOW',\n",
       " 'AWAG',\n",
       " 'AWAN',\n",
       " 'AWAT',\n",
       " 'AWAY',\n",
       " 'AWEE',\n",
       " 'AWFU',\n",
       " 'AWIN',\n",
       " 'AWNY',\n",
       " 'AWOL',\n",
       " 'AWRY',\n",
       " 'AXAL',\n",
       " 'AXED',\n",
       " 'AXEL',\n",
       " 'AXES',\n",
       " 'AXIL',\n",
       " 'AXIS',\n",
       " 'AXIS',\n",
       " 'AXLE',\n",
       " 'AXON',\n",
       " 'AYAH',\n",
       " 'AYIN',\n",
       " 'AZHA',\n",
       " 'AZON',\n",
       " 'AZOX',\n",
       " 'BAAL',\n",
       " 'BAAL',\n",
       " 'BAAR',\n",
       " 'BABA',\n",
       " 'BABE',\n",
       " 'BABI',\n",
       " 'BABS',\n",
       " 'BABU',\n",
       " 'BABY',\n",
       " 'BACH',\n",
       " 'BACK',\n",
       " 'BADE',\n",
       " 'BAFF',\n",
       " 'BAFT',\n",
       " 'BAGA',\n",
       " 'BAGO',\n",
       " 'BAHO',\n",
       " 'BAHT',\n",
       " 'BAIL',\n",
       " 'BAIN',\n",
       " 'BAIS',\n",
       " 'BAIT',\n",
       " 'BAKA',\n",
       " 'BAKE',\n",
       " 'BAKU',\n",
       " 'BAKU',\n",
       " 'BALA',\n",
       " 'BALD',\n",
       " 'BALE',\n",
       " 'BALI',\n",
       " 'BALI',\n",
       " 'BALK',\n",
       " 'BALL',\n",
       " 'BALM',\n",
       " 'BALT',\n",
       " 'BALU',\n",
       " 'BANA',\n",
       " 'BANC',\n",
       " 'BAND',\n",
       " 'BANE',\n",
       " 'BANG',\n",
       " 'BANI',\n",
       " 'BANK',\n",
       " 'BANT',\n",
       " 'BARA',\n",
       " 'BARB',\n",
       " 'BARD',\n",
       " 'BARE',\n",
       " 'BARE',\n",
       " 'BARI',\n",
       " 'BARI',\n",
       " 'BARK',\n",
       " 'BARM',\n",
       " 'BARN',\n",
       " 'BART',\n",
       " 'BARU',\n",
       " 'BASE',\n",
       " 'BASH',\n",
       " 'BASK',\n",
       " 'BASS',\n",
       " 'BAST',\n",
       " 'BAST',\n",
       " 'BATE',\n",
       " 'BATH',\n",
       " 'BATH',\n",
       " 'BATS',\n",
       " 'BATT',\n",
       " 'BATZ',\n",
       " 'BAUD',\n",
       " 'BAUL',\n",
       " 'BAUN',\n",
       " 'BAWD',\n",
       " 'BAWL',\n",
       " 'BAWN',\n",
       " 'BAYA',\n",
       " 'BAYA',\n",
       " 'BAZE',\n",
       " 'BEAD',\n",
       " 'BEAK',\n",
       " 'BEAL',\n",
       " 'BEAM',\n",
       " 'BEAN',\n",
       " 'BEAR',\n",
       " 'BEAT',\n",
       " 'BEAU',\n",
       " 'BECK',\n",
       " 'BECK',\n",
       " 'BEEF',\n",
       " 'BEEK',\n",
       " 'BEEN',\n",
       " 'BEER',\n",
       " 'BEES',\n",
       " 'BEET',\n",
       " 'BEGO',\n",
       " 'BEHN',\n",
       " 'BEID',\n",
       " 'BEJA',\n",
       " 'BELA',\n",
       " 'BELD',\n",
       " 'BELL',\n",
       " 'BELT',\n",
       " 'BELY',\n",
       " 'BEMA',\n",
       " 'BENA',\n",
       " 'BEND',\n",
       " 'BENE',\n",
       " 'BENG',\n",
       " 'BENI',\n",
       " 'BENI',\n",
       " 'BENJ',\n",
       " 'BENN',\n",
       " 'BENO',\n",
       " 'BENT',\n",
       " 'BENU',\n",
       " 'BERE',\n",
       " 'BERG',\n",
       " 'BERI',\n",
       " 'BERM',\n",
       " 'BERN',\n",
       " 'BERT',\n",
       " 'BESA',\n",
       " 'BESS',\n",
       " 'BEST',\n",
       " 'BETA',\n",
       " 'BETA',\n",
       " 'BETH',\n",
       " 'BETH',\n",
       " 'BEVY',\n",
       " 'BHAR',\n",
       " 'BHAT',\n",
       " 'BHIL',\n",
       " 'BHOY',\n",
       " 'BHUT',\n",
       " 'BIAS',\n",
       " 'BIBB',\n",
       " 'BIBI',\n",
       " 'BICE',\n",
       " 'BICE',\n",
       " 'BICK',\n",
       " 'BIDE',\n",
       " 'BIEN',\n",
       " 'BIER',\n",
       " 'BIFF',\n",
       " 'BIGA',\n",
       " 'BIGG',\n",
       " 'BIJA',\n",
       " 'BIKE',\n",
       " 'BIKH',\n",
       " 'BILE',\n",
       " 'BILK',\n",
       " 'BILL',\n",
       " 'BILL',\n",
       " 'BILO',\n",
       " 'BIND',\n",
       " 'BINE',\n",
       " 'BING',\n",
       " 'BINH',\n",
       " 'BINI',\n",
       " 'BINK',\n",
       " 'BINO',\n",
       " 'BINT',\n",
       " 'BIOD',\n",
       " 'BION',\n",
       " 'BIOS',\n",
       " 'BIRD',\n",
       " 'BIRI',\n",
       " 'BIRK',\n",
       " 'BIRL',\n",
       " 'BIRN',\n",
       " 'BIRR',\n",
       " 'BITE',\n",
       " 'BITI',\n",
       " 'BITO',\n",
       " 'BITT',\n",
       " 'BIWA',\n",
       " 'BIXA',\n",
       " 'BIZZ',\n",
       " 'BLAB',\n",
       " 'BLAD',\n",
       " 'BLAE',\n",
       " 'BLAH',\n",
       " 'BLAN',\n",
       " 'BLAS',\n",
       " 'BLAT',\n",
       " 'BLAW',\n",
       " 'BLAY',\n",
       " 'BLEB',\n",
       " 'BLEE',\n",
       " 'BLEO',\n",
       " 'BLET',\n",
       " 'BLIP',\n",
       " 'BLOB',\n",
       " 'BLOC',\n",
       " 'BLOT',\n",
       " 'BLOW',\n",
       " 'BLUB',\n",
       " 'BLUE',\n",
       " 'BLUP',\n",
       " 'BLUR',\n",
       " 'BOAR',\n",
       " 'BOAT',\n",
       " 'BOBA',\n",
       " 'BOBO',\n",
       " 'BOCE',\n",
       " 'BOCK',\n",
       " 'BODE',\n",
       " 'BODO',\n",
       " 'BODY',\n",
       " 'BOER',\n",
       " 'BOGA',\n",
       " 'BOGO',\n",
       " 'BOGO',\n",
       " 'BOGY',\n",
       " 'BOHO',\n",
       " 'BOID',\n",
       " 'BOII',\n",
       " 'BOIL',\n",
       " 'BOIS',\n",
       " 'BOJO',\n",
       " 'BOKE',\n",
       " 'BOLA',\n",
       " 'BOLD',\n",
       " 'BOLE',\n",
       " 'BOLK',\n",
       " 'BOLL',\n",
       " 'BOLO',\n",
       " 'BOLO',\n",
       " 'BOLT',\n",
       " 'BOMA',\n",
       " 'BOMB',\n",
       " 'BOND',\n",
       " 'BONE',\n",
       " 'BONG',\n",
       " 'BONI',\n",
       " 'BONK',\n",
       " 'BONY',\n",
       " 'BOOB',\n",
       " 'BOOD',\n",
       " 'BOOF',\n",
       " 'BOOK',\n",
       " 'BOOL',\n",
       " 'BOOM',\n",
       " 'BOON',\n",
       " 'BOOR',\n",
       " 'BOOT',\n",
       " 'BORA',\n",
       " 'BORD',\n",
       " 'BORE',\n",
       " 'BORG',\n",
       " 'BORH',\n",
       " 'BORN',\n",
       " 'BORO',\n",
       " 'BORO',\n",
       " 'BORT',\n",
       " 'BOSC',\n",
       " 'BOSE',\n",
       " 'BOSH',\n",
       " 'BOSK',\n",
       " 'BOSN',\n",
       " 'BOSS',\n",
       " 'BOTA',\n",
       " 'BOTE',\n",
       " 'BOTH',\n",
       " 'BOTT',\n",
       " 'BOUD',\n",
       " 'BOUK',\n",
       " 'BOUN',\n",
       " 'BOUT',\n",
       " 'BOUW',\n",
       " 'BOWK',\n",
       " 'BOWL',\n",
       " 'BOXY',\n",
       " 'BOYD',\n",
       " 'BOZA',\n",
       " 'BOZO',\n",
       " 'BRAB',\n",
       " 'BRAD',\n",
       " 'BRAD',\n",
       " 'BRAE',\n",
       " 'BRAG',\n",
       " 'BRAM',\n",
       " 'BRAN',\n",
       " 'BRAT',\n",
       " 'BRAW',\n",
       " 'BRAY',\n",
       " 'BRED',\n",
       " 'BREE',\n",
       " 'BREI',\n",
       " 'BRET',\n",
       " 'BRET',\n",
       " 'BREW',\n",
       " 'BREY',\n",
       " 'BRIG',\n",
       " 'BRIM',\n",
       " 'BRIN',\n",
       " 'BRIT',\n",
       " 'BROB',\n",
       " 'BROD',\n",
       " 'BROG',\n",
       " 'BROO',\n",
       " 'BROT',\n",
       " 'BROW',\n",
       " 'BRUT',\n",
       " 'BUAL',\n",
       " 'BUBA',\n",
       " 'BUBE',\n",
       " 'BUBO',\n",
       " 'BUBO',\n",
       " 'BUCK',\n",
       " 'BUDA',\n",
       " 'BUDH',\n",
       " 'BUFF',\n",
       " 'BUFO',\n",
       " 'BUGI',\n",
       " 'BUHL',\n",
       " 'BUHR',\n",
       " 'BUKH',\n",
       " 'BULB',\n",
       " 'BULK',\n",
       " 'BULL',\n",
       " 'BULT',\n",
       " 'BUMP',\n",
       " 'BUNA',\n",
       " 'BUNA',\n",
       " 'BUND',\n",
       " 'BUNG',\n",
       " 'BUNK',\n",
       " 'BUNT',\n",
       " 'BUOY',\n",
       " 'BURD',\n",
       " 'BURE',\n",
       " 'BURG',\n",
       " 'BURI',\n",
       " 'BURI',\n",
       " 'BURL',\n",
       " 'BURN',\n",
       " 'BURO',\n",
       " 'BURP',\n",
       " 'BURR',\n",
       " 'BURT',\n",
       " 'BURY',\n",
       " 'BUSH',\n",
       " 'BUSK',\n",
       " 'BUSS',\n",
       " 'BUST',\n",
       " 'BUSY',\n",
       " 'BUTE',\n",
       " 'BUTT',\n",
       " 'BUZZ',\n",
       " 'BYEE',\n",
       " 'BYGO',\n",
       " 'BYON',\n",
       " 'BYRE',\n",
       " 'BYTH',\n",
       " 'CAAM',\n",
       " 'CABA',\n",
       " 'CACA',\n",
       " 'CACK',\n",
       " 'CADE',\n",
       " 'CADI',\n",
       " 'CAFH',\n",
       " 'CAGE',\n",
       " 'CAGN',\n",
       " 'CAID',\n",
       " 'CAIN',\n",
       " 'CAIN',\n",
       " 'CAKE',\n",
       " 'CAKY',\n",
       " 'CALF',\n",
       " 'CALK',\n",
       " 'CALL',\n",
       " 'CALM',\n",
       " 'CALP',\n",
       " 'CALX',\n",
       " 'CAMB',\n",
       " 'CAME',\n",
       " 'CAME',\n",
       " 'CAMP',\n",
       " 'CANA',\n",
       " 'CAND',\n",
       " 'CANE',\n",
       " 'CANK',\n",
       " 'CANT',\n",
       " 'CANY',\n",
       " 'CAPE',\n",
       " 'CAPE',\n",
       " 'CAPH',\n",
       " 'CAPH',\n",
       " 'CARA',\n",
       " 'CARD',\n",
       " 'CARE',\n",
       " 'CARK',\n",
       " 'CARL',\n",
       " 'CARL',\n",
       " 'CARO',\n",
       " 'CARP',\n",
       " 'CARR',\n",
       " 'CART',\n",
       " 'CARY',\n",
       " 'CASE',\n",
       " 'CASE',\n",
       " 'CASH',\n",
       " 'CASK',\n",
       " 'CASS',\n",
       " 'CAST',\n",
       " 'CATE',\n",
       " 'CAUK',\n",
       " 'CAUL',\n",
       " 'CAUM',\n",
       " 'CAUP',\n",
       " 'CAVA',\n",
       " 'CAVE',\n",
       " 'CAVY',\n",
       " 'CAWK',\n",
       " 'CAZA',\n",
       " 'CEDE',\n",
       " 'CEIL',\n",
       " 'CELL',\n",
       " 'CELT',\n",
       " 'CELT',\n",
       " 'CENT',\n",
       " 'CEPA',\n",
       " 'CEPE',\n",
       " 'CEPS',\n",
       " 'CERE',\n",
       " 'CERN',\n",
       " 'CERO',\n",
       " 'CESS',\n",
       " 'CEST',\n",
       " 'CETE',\n",
       " 'CETI',\n",
       " 'CEYX',\n",
       " 'CHAA',\n",
       " 'CHAB',\n",
       " 'CHAC',\n",
       " 'CHAD',\n",
       " 'CHAI',\n",
       " 'CHAL',\n",
       " 'CHAM',\n",
       " 'CHAM',\n",
       " 'CHAO',\n",
       " 'CHAP',\n",
       " 'CHAR',\n",
       " 'CHAT',\n",
       " 'CHAW',\n",
       " 'CHAY',\n",
       " 'CHEE',\n",
       " 'CHEF',\n",
       " 'CHEN',\n",
       " 'CHET',\n",
       " 'CHEW',\n",
       " 'CHIA',\n",
       " 'CHIC',\n",
       " 'CHID',\n",
       " 'CHIH',\n",
       " 'CHIL',\n",
       " 'CHIN',\n",
       " 'CHIN',\n",
       " 'CHIP',\n",
       " 'CHIP',\n",
       " 'CHIT',\n",
       " 'CHOB',\n",
       " 'CHOL',\n",
       " 'CHOL',\n",
       " 'CHOP',\n",
       " 'CHOU',\n",
       " 'CHOW',\n",
       " 'CHUB',\n",
       " 'CHUD',\n",
       " 'CHUG',\n",
       " 'CHUM',\n",
       " 'CHUN',\n",
       " 'CHUN',\n",
       " 'CHUT',\n",
       " 'CINE',\n",
       " 'CION',\n",
       " 'CIPO',\n",
       " 'CISE',\n",
       " 'CIST',\n",
       " 'CITE',\n",
       " 'CITY',\n",
       " 'CIVE',\n",
       " 'CIXO',\n",
       " 'CLAD',\n",
       " 'CLAG',\n",
       " 'CLAM',\n",
       " 'CLAN',\n",
       " 'CLAP',\n",
       " 'CLAT',\n",
       " 'CLAW',\n",
       " 'CLAY',\n",
       " 'CLAY',\n",
       " 'CLED',\n",
       " 'CLEE',\n",
       " 'CLEF',\n",
       " 'CLEG',\n",
       " 'CLEM',\n",
       " 'CLEM',\n",
       " 'CLEP',\n",
       " 'CLEW',\n",
       " 'CLIO',\n",
       " 'CLIP',\n",
       " 'CLIT',\n",
       " 'CLOD',\n",
       " 'CLOG',\n",
       " 'CLOP',\n",
       " 'CLOT',\n",
       " 'CLOW',\n",
       " 'CLOY',\n",
       " 'CLUB',\n",
       " 'CLUE',\n",
       " 'COAK',\n",
       " 'COAL',\n",
       " 'COAN',\n",
       " 'COAT',\n",
       " 'COAX',\n",
       " 'COCA',\n",
       " 'COCK',\n",
       " 'COCO',\n",
       " 'CODA',\n",
       " 'CODE',\n",
       " 'CODO',\n",
       " 'COED',\n",
       " 'COFF',\n",
       " 'COFT',\n",
       " 'COHO',\n",
       " 'COIF',\n",
       " 'COIL',\n",
       " 'COIN',\n",
       " 'COIR',\n",
       " 'COIX',\n",
       " 'COKE',\n",
       " 'COKY',\n",
       " 'COLA',\n",
       " 'COLA',\n",
       " 'COLD',\n",
       " 'COLE',\n",
       " 'COLE',\n",
       " 'COLI',\n",
       " 'COLK',\n",
       " 'COLL',\n",
       " 'COLP',\n",
       " 'COLT',\n",
       " 'COLT',\n",
       " 'COLY',\n",
       " 'COMA',\n",
       " 'COMB',\n",
       " 'COME',\n",
       " 'COND',\n",
       " 'CONE',\n",
       " 'CONK',\n",
       " 'CONN',\n",
       " 'CONY',\n",
       " 'COOF',\n",
       " 'COOK',\n",
       " 'COOL',\n",
       " 'COOM',\n",
       " 'COON',\n",
       " 'COOP',\n",
       " 'COOS',\n",
       " 'COOT',\n",
       " 'COPA',\n",
       " 'COPE',\n",
       " 'COPR',\n",
       " 'COPT',\n",
       " 'COPY',\n",
       " 'CORA',\n",
       " 'CORA',\n",
       " 'CORD',\n",
       " 'CORE',\n",
       " 'CORF',\n",
       " 'CORK',\n",
       " 'CORM',\n",
       " 'CORN',\n",
       " 'CORP',\n",
       " 'CORY',\n",
       " 'COSH',\n",
       " 'COSS',\n",
       " 'COST',\n",
       " 'COSY',\n",
       " 'COTE',\n",
       " 'COTH',\n",
       " 'COTO',\n",
       " 'COUE',\n",
       " 'COUL',\n",
       " 'COUP',\n",
       " 'COVE',\n",
       " 'COWL',\n",
       " 'COWY',\n",
       " 'COXA',\n",
       " 'COXY',\n",
       " 'COYO',\n",
       " 'COZE',\n",
       " 'COZY',\n",
       " 'CRAB',\n",
       " 'CRAG',\n",
       " 'CRAM',\n",
       " 'CRAN',\n",
       " 'CRAP',\n",
       " 'CRAW',\n",
       " 'CRAX',\n",
       " 'CREA',\n",
       " 'CREE',\n",
       " 'CREE',\n",
       " 'CREW',\n",
       " 'CREX',\n",
       " 'CRIB',\n",
       " 'CRIC',\n",
       " 'CRIG',\n",
       " 'CRIN',\n",
       " 'CRIS',\n",
       " 'CROC',\n",
       " 'CROM',\n",
       " 'CROP',\n",
       " 'CROW',\n",
       " 'CROY',\n",
       " 'CRUM',\n",
       " 'CRUS',\n",
       " 'CRUX',\n",
       " 'CUBA',\n",
       " 'CUBE',\n",
       " 'CUBI',\n",
       " 'CUCK',\n",
       " 'CUFF',\n",
       " 'CUIR',\n",
       " 'CUKE',\n",
       " 'CULL',\n",
       " 'CULM',\n",
       " 'CULT',\n",
       " 'CUMP',\n",
       " 'CUNA',\n",
       " 'CUON',\n",
       " 'CURB',\n",
       " 'CURD',\n",
       " 'CURE',\n",
       " 'CURL',\n",
       " 'CURN',\n",
       " 'CURR',\n",
       " 'CURT',\n",
       " 'CURT',\n",
       " 'CUSH',\n",
       " 'CUSK',\n",
       " 'CUSP',\n",
       " 'CUSS',\n",
       " 'CUTE',\n",
       " 'CUVY',\n",
       " 'CUYA',\n",
       " 'CYAN',\n",
       " 'CYKE',\n",
       " 'CYMA',\n",
       " 'CYME',\n",
       " 'CYST',\n",
       " 'CZAR',\n",
       " 'DABB',\n",
       " 'DACE',\n",
       " 'DADA',\n",
       " 'DADA',\n",
       " 'DADE',\n",
       " 'DADO',\n",
       " 'DADU',\n",
       " 'DAER',\n",
       " 'DAFF',\n",
       " 'DAFT',\n",
       " 'DAGO',\n",
       " 'DAGS',\n",
       " 'DAIL',\n",
       " 'DAIN',\n",
       " 'DAIS',\n",
       " 'DALE',\n",
       " 'DALE',\n",
       " 'DALI',\n",
       " 'DALK',\n",
       " 'DALT',\n",
       " 'DAMA',\n",
       " 'DAME',\n",
       " 'DAMN',\n",
       " ...]"
      ]
     },
     "execution_count": 208,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# valid_words"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [],
   "source": [
    "if False:\n",
    "    correct = 0\n",
    "    incorrect = 0\n",
    "\n",
    "    for word in valid_words:\n",
    "        shear = random_state.choice(shear_values)\n",
    "        scale = random_state.choice(scale_values)\n",
    "        subimages = create_captcha(word, shear=shear, scale=scale, size=(30, len(word) * 25))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number correct is 2476\n",
      "Number incorrect is 3037\n"
     ]
    }
   ],
   "source": [
    "num_correct = 0 \n",
    "num_incorrect = 0 \n",
    "for word in valid_words: \n",
    "    shear = random_state.choice(shear_values)\n",
    "    scale = random_state.choice(scale_values)\n",
    "    correct, word, prediction = test_prediction(word, clf, shear=shear, scale=scale)\n",
    "    #print(correct, word, prediction)\n",
    "    if correct: \n",
    "        num_correct += 1 \n",
    "    else: \n",
    "        num_incorrect += 1\n",
    "        #if len(prediction) == len(word):\n",
    "        #    print(word, prediction)\n",
    "print(\"Number correct is {0}\".format(num_correct)) \n",
    "print(\"Number incorrect is {0}\".format(num_incorrect))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 209,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "correct"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4491202612007981"
      ]
     },
     "execution_count": 210,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = num_correct/(num_correct+num_incorrect)\n",
    "p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.96059601"
      ]
     },
     "execution_count": 211,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "0.99 ** 4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluation_versus_shear(shear_value):\n",
    "    print(shear_value)\n",
    "    num_correct = 0 \n",
    "    num_incorrect = 0 \n",
    "    for word in valid_words: \n",
    "        scale = random_state.choice(scale_values)\n",
    "        correct, word, prediction = test_prediction(word, clf, shear=shear_value, scale=scale)\n",
    "        #print(correct, word, prediction)\n",
    "        if correct: \n",
    "            num_correct += 1 \n",
    "        else: \n",
    "            num_incorrect += 1\n",
    "    return num_correct/(num_correct+num_incorrect)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0\n",
      "0.2\n",
      "0.4\n",
      "0.6000000000000001\n"
     ]
    }
   ],
   "source": [
    "scores = [evaluation_versus_shear(shear) for shear in shear_values]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.  , 0.05, 0.1 , 0.15, 0.2 , 0.25, 0.3 , 0.35, 0.4 , 0.45, 0.5 ,\n",
       "       0.55, 0.6 , 0.65, 0.7 , 0.75])"
      ]
     },
     "execution_count": 215,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# shear_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn\n",
    "plt.figure(figsize=(10, 7))\n",
    "plt.ylabel = \"Accuracy\"\n",
    "plt.xlabel = \"Shear\"\n",
    "plt.plot(shear_values, scores)\n",
    "plt.savefig(r\"Graphics/B06162_08_18.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import confusion_matrix \n",
    "cm = confusion_matrix(np.argmax(y_test, axis=1), np.argmax(y_pred, axis=1))\n",
    "cm = np.array([row / np.sum(row) for row in cm])\n",
    "np.fill_diagonal(cm, 0)\n",
    "# cm = np.log(cm + 1e-16)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10, 10)) \n",
    "plt.imshow(cm, interpolation='nearest')\n",
    "tick_marks = np.arange(len(letters))\n",
    "plt.xticks(tick_marks, letters) \n",
    "plt.yticks(tick_marks, letters) \n",
    "plt.ylabel = 'Actual'\n",
    "plt.xlabel = 'Predicted'\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The number of steps needed is: 1\n"
     ]
    }
   ],
   "source": [
    "from nltk.metrics import edit_distance \n",
    "steps = edit_distance(\"STEP\", \"STOP\") \n",
    "print(\"The number of steps needed is: {0}\".format(steps))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [],
   "source": [
    "def compute_distance(prediction, word):\n",
    "    \n",
    "    len_word = min(len(prediction), len(word))\n",
    "    \n",
    "    return len_word - sum([prediction[i] == word[i] for i in range(len_word)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {},
   "outputs": [],
   "source": [
    "from operator import itemgetter \n",
    "\n",
    "def improved_prediction(word, net, dictionary, shear=0.2, scale=1.0): \n",
    "    captcha = create_captcha(word, shear=shear, scale=scale) \n",
    "    prediction = predict_captcha(captcha, net) \n",
    "    \n",
    "    if prediction not in dictionary: # only consider those words who are thought to be wrong\n",
    "        distances = sorted([(word, compute_distance(prediction, word)) for word in dictionary], key=itemgetter(1)) \n",
    "        # consider the text distance between prediction word and dictionary word, and get the one with shortest distance\n",
    "        best_word = distances[0] \n",
    "        prediction = best_word[0]\n",
    "    return word == prediction, word, prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-235-3b61c46b4c08>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      5\u001b[0m     \u001b[0mshear\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchoice\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mshear_values\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      6\u001b[0m     \u001b[0mscale\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchoice\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mscale_values\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m     \u001b[0mcorrect\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mword\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mprediction\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimproved_prediction\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mword\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mclf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalid_words\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mshear\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mshear\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscale\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mscale\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      8\u001b[0m     \u001b[1;31m#print(correct, word, prediction)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      9\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mcorrect\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-232-9a4d6d004453>\u001b[0m in \u001b[0;36mimproved_prediction\u001b[1;34m(word, net, dictionary, shear, scale)\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mimproved_prediction\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mword\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnet\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdictionary\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mshear\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0.2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscale\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1.0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m     \u001b[0mcaptcha\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcreate_captcha\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mword\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mshear\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mshear\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscale\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mscale\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m     \u001b[0mprediction\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpredict_captcha\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcaptcha\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnet\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mprediction\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mdictionary\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-186-48bf969e0cb9>\u001b[0m in \u001b[0;36mpredict_captcha\u001b[1;34m(captcha_image, neural_network)\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mpredict_captcha\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcaptcha_image\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mneural_network\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m     \u001b[0msubimages\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msegment_image\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcaptcha_image\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m     \u001b[0mdataset\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msubimage\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;36m20\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m20\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0msubimage\u001b[0m \u001b[1;32min\u001b[0m \u001b[0msubimages\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      4\u001b[0m     \u001b[0mX_test\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-186-48bf969e0cb9>\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mpredict_captcha\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcaptcha_image\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mneural_network\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m     \u001b[0msubimages\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msegment_image\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcaptcha_image\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m     \u001b[0mdataset\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msubimage\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;36m20\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m20\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0msubimage\u001b[0m \u001b[1;32min\u001b[0m \u001b[0msubimages\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      4\u001b[0m     \u001b[0mX_test\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mS:\\Anaconda\\lib\\site-packages\\skimage\\transform\\_warps.py\u001b[0m in \u001b[0;36mresize\u001b[1;34m(image, output_shape, order, mode, cval, clip, preserve_range, anti_aliasing, anti_aliasing_sigma)\u001b[0m\n\u001b[0;32m    167\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    168\u001b[0m             \u001b[0mtform\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mAffineTransform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 169\u001b[1;33m             \u001b[0mtform\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mestimate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msrc_corners\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdst_corners\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    170\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    171\u001b[0m         \u001b[1;31m# Make sure the transform is exactly metric, to ensure fast warping.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mS:\\Anaconda\\lib\\site-packages\\skimage\\transform\\_geometric.py\u001b[0m in \u001b[0;36mestimate\u001b[1;34m(self, src, dst)\u001b[0m\n\u001b[0;32m    677\u001b[0m         \u001b[0mA\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mrows\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m7\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0myd\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mys\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    678\u001b[0m         \u001b[0mA\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mrows\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m8\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mxd\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 679\u001b[1;33m         \u001b[0mA\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mrows\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m8\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0myd\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    680\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    681\u001b[0m         \u001b[1;31m# Select relevant columns, depending on params\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "num_correct = 0 \n",
    "num_incorrect = 0 \n",
    "for word in valid_words: \n",
    "    shear = random_state.choice(shear_values)\n",
    "    scale = random_state.choice(scale_values)\n",
    "    correct, word, prediction = improved_prediction(word, clf, valid_words, shear=shear, scale=scale)\n",
    "    #print(correct, word, prediction)\n",
    "    if correct: \n",
    "        num_correct += 1 \n",
    "    else: \n",
    "        num_incorrect += 1\n",
    "        #if len(prediction) == len(word):\n",
    "        #    print(word, prediction)\n",
    "print(\"Number correct is {0}\".format(num_correct)) \n",
    "print(\"Number incorrect is {0}\".format(num_incorrect))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5661164520224923"
      ]
     },
     "execution_count": 234,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = num_correct/(num_correct+num_incorrect)\n",
    "p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'DAGS'"
      ]
     },
     "execution_count": 236,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "word"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
